This project is a demonstrator of pattern instanciation on system engineering model (pseim), made by the MOISE project. It contains the metamodel of the pseim, graphical and textual editors, formal verification models (event-B) and examples.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

65466 lines
5.6 MiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="INITIALISATION/comp/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="comp_disj/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m1,m2)" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒m1∈dom(components)∧components∈Model ⇸ ℙ(Component)∧m2∈dom(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒m1∈dom(components)∧components∈Model ⇸ ℙ(Component)∧m2∈dom(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m2∈dom(components)">
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m2∈Model">
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬m1=m2⇒m1∈dom(components)∧components∈Model ⇸ ℙ(Component)∧m2∈dom(components)">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬m1=m2">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="m1∈dom(components)">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m1∈Model">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="m1∈dom(components)∧components∈Model ⇸ ℙ(Component)∧m2∈dom(components)">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r0" 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="p5">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(∀m⦂Model·m∈dom(components))∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="m∈dom(components)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·⊤⇒m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Model⇒m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/comp_disj/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<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 (frees m1,m2)" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components'" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components'(m1)∩components'(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components'(m1)∩components'(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components'(m1)∩components'(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬m1=m2">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬m1=m2⇒components'(m1)∩components'(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r0" 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="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components'" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container'" org.eventb.core.type="ℙ(ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∃m⦂Model·m∈Model∧components'(m) ⇸ components'(m)=container'"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·⊤⇒m∈dom(components')∧components'∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈dom(components')"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container'∈{m⦂Model·m∈Model ∣ components'(m) ⇸ components'(m)}"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·m∈Model⇒m∈dom(components')∧components'∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃m⦂Model·⊤∧components'(m) ⇸ components'(m)=container'"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components'∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃m⦂Model·components'(m) ⇸ components'(m)=container'"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_ctr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<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 name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m∈dom(components)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·m∈dom(container)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(∀m⦂Model·m∈dom(container))∧container∈Model ⇸ ℙ(Component × Component)∧(∀m⦂Model·m∈dom(components))∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m∈dom(container)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/cont_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/cont_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components'" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container'" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container'(m)∈components'(m) ⇸ components'(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·container'(m)∈components'(m) ⇸ components'(m)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cm_ctr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈dom(components)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧m∈dom(components)∧components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="m∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒m∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="m∈Pattern⇒m∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧m∈dom(components)∧components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/cm/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="INITIALISATION/cm_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c_multiplicity'" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components'" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Model">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·c_multiplicity'(m)∈components'(m) ⇸ ℕ1"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity'(m)∈components'(m) ⇸ ℕ1">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="acycl/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<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 name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m,f)" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model,f⦂ℙ(Component×Component)·m∈dom(components)∧components∈Model ⇸ ℙ(Component)∧(f∈components(m) ↔ components(m)⇒m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m∈dom(components)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="f∈components(m) ↔ components(m)⇒m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(∀m⦂Model·m∈dom(components))∧components∈Model ⇸ ℙ(Component)∧(∀m⦂Model,f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)⇒m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="m∈dom(container)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model,f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)⇒m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="f∈components(m) ↔ components(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_unfold_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/ic/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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,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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/icr/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/mult/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="pc" 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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<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="p8,p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p6"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p6,p2,p7,p10,p4,p9,p11,p3,p15,p8,p5,p16,p13,p17,p1,p19,p20,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for c_multiplicity(Pat)" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p31">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p31"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p32"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀pc⦂Component·⊤∧⊤∧(pc∈components(Pat)⇒Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧pc∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧finite(inst_components[{pc}]))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="pc∈components(Pat)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀pc⦂Component·pc∈components(Pat)⇒Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧pc∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ1)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧pc∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬Mdl=Pat"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="pc∈components(Pat)⇒Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧pc∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℕ1"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="pc∈dom(c_multiplicity(Pat))">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ1"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀pc⦂Component·Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧(pc∈components(Pat)⇒Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧pc∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧finite(inst_components[{pc}]))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl≠Pat"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p7,p8,p9,p10,p11,p12,p14,p15,p16,p41,p18,p19,p42,p20,p21,p23,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6,p17,p13,p25,p24,p1,p2,p3,p4,p5,p7,p8,p9,p10,p11,p12,p14,p15,p16,p18,p19,p20,p21,p23,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}]⊆({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p3,p4,p6,p7,p8,p9,p24,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p1,p5,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/new_c_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p21,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_unfold_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p2,p1,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c ∖ {c}⊆(components{Pat ↦ components(Pat)∪ran(new_c)})(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat)∪ran(new_c)})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(new_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/p_WD/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p20,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/ic/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/icr/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Mdl=Pat"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl≠Pat"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/ps1/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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,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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/ps2/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Inst∈dom(container)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/nc/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/comp/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p13,p14,p15,p16,p17"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p1,p2,p3,p4,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(container(Inst))[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼;container(Pat);inst_components⊆container(Mdl)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Pat)⊆inst_components∼">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="new_components∈components(Pat) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Mdl=Pat">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Mdl ↦ components(Mdl)∪ran(new_components)}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(inst_components) ◁ container(Inst);inst_components⊆inst_components;container(Mdl)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="inst_components∈components(Pat) ⤔ components(Mdl)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Mdl≠Pat">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(c_multiplicity(Pat))[components(Pat)]⊆{1}">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p44">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Mdl" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p30,p8,p33,p5,p11,p26,p14,p36,p31,p21,p24,p15,p37,p12,p9,p16,p38,p27,p17,p1,p39,p34,p25,p7,p18,p2,p6,p23,p13,p10,p4,p32,p20,p28,p29,p19,p3,p40,p41,p44,p46,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p24,p32,p28,p29,p3,p44,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(container(Inst))[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity(m)∈(components{Mdl ↦ components(Mdl)∪ran(new_components)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c;container(Pat)=container(Inst);inst2pat_c"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dom(inst_components) ◁ container(Inst);inst_components⊆inst_components;container(Mdl)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈(components{Mdl ↦ components(Mdl)∪ran(new_components)})(m) → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬m=Mdl">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="c_multiplicity(m)∈({Mdl} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_multiplicity(Mdl)∈components(Mdl)∪ran(new_components) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Mdl∈Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="m=Mdl">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="m∈Pattern⇒c_multiplicity(m)∈(components{Mdl ↦ components(Mdl)∪ran(new_components)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_multiplicity(m)∈components(Mdl)∪ran(new_components) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" 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.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p28,p10,p30,p19,p31,p7,p4,p20,p6,p18,p13,p24,p22,p8,p29,p14,p1,p23,p16,p15,p3,p5,p25,p11,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p27,p21,p12,p17,p2,p28,p10,p30,p19,p31,p7,p4,p20,p6,p18,p13,p24,p22,p8,p29,p14,p1,p23,p16,p15,p3,p5,p25,p11,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Mdl} × ran(new_components)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p2,p21,p22,p23,p24,p25,p26,p27,p28,p29"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p4,p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∪(new_components∼;container;(inst_components∪new_components))∈ran(components∪({Mdl} × ran(new_components))) ⇸ ran(components∪({Mdl} × ran(new_components)))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_ctr/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p27,p28,p5,p6,p7,p8,p9,p29,p30,p11,p12,p14,p16,p31,p18,p19,p20,p21,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Mdl} × ran(new_components)));(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)));(components∪({Mdl} × ran(new_components)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/acycl/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13,p14,p15">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13,p14,p15"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container∪((inst_components∪new_components)∼;container;(inst_components∪new_components))⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧(inst_components∪new_components)∼;container;(inst_components∪new_components)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧(inst_components∪new_components)∼;container;(inst_components∪new_components)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧(inst_components∪new_components)∼;container;(inst_components∪new_components)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/m/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/f/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Inst∈dom(container)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_clone_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_free_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p13,p9,p17,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p10,p15,p8,p12,p7,p2,p5,p16,p4,p14,p6,p1,p13,p9,p17,p11">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/to_clone_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p4,p5,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∈(components∪({Mdl} × ran(new_components)))[{Inst}] ⇸ (components∪({Mdl} × ran(new_components)))[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/to_free_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p9,p10,p12,p14,p16,p17,p18,p19,p33,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p11,p8,p1,p13,p15,p2,p3,p4,p5,p6,p7,p9,p10,p12,p14,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼;container(Pat);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components(Pat) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_free_c⊆(components{Mdl ↦ components(Mdl)∪ran(new_components)})(Pat)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components{Mdl ↦ components(Mdl)∪ran(new_components)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(c_multiplicity(Pat))[components(Pat)]⊆{1}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Pat)⊆inst_components∼"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="new_components∈components(Pat) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components{Mdl ↦ components(Mdl)∪ran(new_components)})"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_clone_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p9,p28,p10,p13,p14,p15,p16,p30,p17,p18,p19,p20,p21,p22,p23,p24,p26,p27"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p12,p11,p3,p1,p2,p4,p5,p6,p7,p8,p9,p28,p10,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})∈(components{Pat ↦ components(Pat)∪ran(new_c)})(Pat) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(Pat)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat)∪ran(new_c)})"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})∈components(Pat)∪ran(new_c) ⇸ components(Pat)∪ran(new_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(new_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cloned_c_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p17,p11,p3,p13,p19,p12,p16,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p1,p17,p11,p3,p13,p19,p12,p16,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/comp/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p12,p14,p13,p17,p10,p2,p5,p22,p23,p15,p4,p19,p6,p11,p7,p8,p24,p20,p1,p25"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p16,p9,p18,p12,p14,p13,p17,p10,p2,p5,p22,p23,p15,p4,p19,p6,p11,p7,p8,p24,p20,p1,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(cloned_c)}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p6,p7,p32,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p5,p16,p8,p27,p29,p1,p24,p2,p3,p4,p6,p7,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p6,p7,p32,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p5,p16,p8,p27,p29,p33,p1,p24,p2,p3,p4,p6,p7,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p6,p7,p32,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p5,p16,p8,p27,p33,p29,p1,p24,p2,p3,p4,p6,p7,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p6,p7,p32,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p5,p16,p8,p27,p33,p1,p24,p2,p3,p4,p6,p7,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))})(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_multiplicity(m)∈components(Pat)∪ran(cloned_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_multiplicity(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))})(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈components(Pat)∪ran(cloned_c) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="m∈Pattern⇒(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))})(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈components(Pat)∪ran(cloned_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p25,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p16,p9,p1,p2,p3,p4,p5,p6,p7,p8,p10,p11,p12,p13,p14,p15,p17,p18,p19,p21,p22,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m1)∩(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p12">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (container(Pat)∪(ran(cloned_c) × {c})∈Component ⇸ Component)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p5,p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p6,p5">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1,p2,p7,p12,p4,p6,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p6,p5,p15">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae (container(Pat)∪(ran(cloned_c) × {c}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p5,p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p6,p5,p16">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=container(Pat)∪(ran(cloned_c) × {c})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p15"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ae∈Component ⇸ Component">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ae=container(Pat)∪(ran(cloned_c) × {c})">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container{Pat ↦ container(Pat)∪(ran(cloned_c) × {c})}∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container{Pat ↦ ae}∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="container(Pat)∪(ran(cloned_c) × {c})"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cont_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p15,p16,p8,p27,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p15,p16,p8,p27,p32,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p15,p16,p8,p27,p32,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p15,p16,p8,p27,p32,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p15,p16,p8,p32,p27,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p15,p16,p8,p32,p27,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p15,p16,p8,p32,p27,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p24,p2,p3,p4,p5,p6,p7,p31,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p15,p16,p8,p32,p1,p24,p2,p3,p4,p5,p6,p7,p9,p10,p11,p12,p13,p14,p17,p18,p19,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(Pat)∪ran(cloned_c) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(cloned_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="container(m)∈components(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(Pat)∪ran(cloned_c) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(cloned_c) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container{Pat ↦ container(Pat)∪(ran(cloned_c) × {c})})(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(Pat)∪ran(cloned_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(m) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(cloned_c) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(cloned_c) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="container(m)∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈({Pat} ⩤ components)(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(Pat)∪ran(cloned_c) ⇸ components(Pat)∪ran(cloned_c)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container(m)∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(cloned_c) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(cloned_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="container(m)∈components(m) ⇸ components(Pat)∪ran(cloned_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(container{Pat ↦ container(Pat)∪(ran(cloned_c) × {c})})(m)∈(components{Pat ↦ components(Pat)∪ran(cloned_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container(Pat)∪(ran(cloned_c) × {c})∈components(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/acycl/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·(container{Pat ↦ container(Pat)∪(ran(cloned_c) × {c})})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·(container{Pat ↦ container(Pat)∪(ran(cloned_c) × {c})})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_clone_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{c} ⩤ to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_free_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p8,p27,p9,p10,p2,p11,p12,p13,p14,p29,p16,p4,p17,p18,p5,p6,p7,p20,p21,p22,p24,p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p15,p19,p3,p1,p8,p27,p9,p10,p2,p11,p12,p13,p14,p16,p4,p17,p18,p5,p6,p7,p20,p21,p22,p24,p25,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_free_c⊆(components{Pat ↦ components(Pat)∪ran(cloned_c)})(Pat)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_free_c⊆components(Pat)∪ran(cloned_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat)∪ran(cloned_c)})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(cloned_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/container/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p25,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p9,p1,p2,p3,p4,p5,p6,p7,p8,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/pc/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p25,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p9,p1,p2,p3,p4,p5,p6,p7,p8,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/comp/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p10,p2,p12,p11,p14,p8,p1,p5,p19,p20,p13,p4,p17,p6,p9,p7,p15,p21,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Pat ↦ components(Pat) ∖ {c}}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p1,p2,p4,p6,p7,p30,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p5,p15,p22,p25,p27,p21,p1,p2,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p1,p2,p4,p6,p7,p30,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p5,p15,p22,p25,p27,p31,p21,p1,p2,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p31">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p1,p2,p4,p6,p7,p30,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p5,p15,p22,p25,p31,p27,p21,p1,p2,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p1,p2,p4,p6,p7,p30,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p5,p15,p22,p25,p31,p21,p1,p2,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p16,p17,p19,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(c_multiplicity{Pat ↦ {c} ⩤ c_multiplicity(Pat)})(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(c_multiplicity{Pat ↦ {c} ⩤ c_multiplicity(Pat)})(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="m∈Pattern⇒(c_multiplicity{Pat ↦ {c} ⩤ c_multiplicity(Pat)})(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity(m)∈components(Pat) ∖ {c} → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_multiplicity(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="{c} ⩤ c_multiplicity(Pat)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="{c} ⩤ c_multiplicity(Pat)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="{c} ⩤ c_multiplicity(Pat)∈components(Pat) ∖ {c} → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="{c} ⩤ c_multiplicity(Pat)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈components(Pat) ∖ {c} → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/comp_disj/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p19,p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒(components{Pat ↦ components(Pat) ∖ {c}})(m1)∩(components{Pat ↦ components(Pat) ∖ {c}})(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p24,p9,p10,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container{Pat ↦ {c} ⩤ container(Pat)}∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/cont_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" 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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p24">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="lae in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="lae in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prRule name="r6" 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="p1"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17,p11,p3,p13,p12,p15,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8,p31"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c∉ran({c} ⩤ container(Pat)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p16,p24,p25,p17,p11,p3,p13,p12,p15,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p34,p35">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p34,p35,p36">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p16,p24,p25,p17,p11,p3,p13,p12,p15,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8,p31,p34,p35,p36">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p36"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p38">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p38" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p40"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p42">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p17,p11,p3,p13,p19,p12,p15,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p16,p24,p42,p1,p17,p11,p3,p13,p19,p12,p15,p9,p2,p5,p20,p21,p14,p4,p18,p6,p10,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(Pat)∈components(Pat) ∖ {c} ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(Pat)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pat=Pat"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬c∈ran({c} ⩤ container(Pat))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∉ran({c} ⩤ container(Pat))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(Pat)∈components(Pat) ∖ {c} ⇸ ({Pat} ⩤ components)(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container{Pat ↦ {c} ⩤ container(Pat)})(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="{c} ⩤ container(Pat)∈components(Pat) ∖ {c} ⇸ components(Pat) ∖ {c}"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(m)∈components(Pat) ∖ {c} ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(Pat)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Pat=Pat"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(m)∈components(Pat) ∖ {c} ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(m)∈({Pat} ⩤ components)(m) ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(m)∈(components{Pat ↦ components(Pat) ∖ {c}})(m) ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="{c} ⩤ container(Pat)∈components(Pat) ∖ {c} ⇸ ({Pat} ⩤ components)(Pat)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container{Pat ↦ {c} ⩤ container(Pat)})(Pat)∈components(Pat) ∖ {c} ⇸ components(Pat) ∖ {c}"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.locEq"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/acycl/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p18,p12,p4,p14,p20,p13,p16,p2,p6,p21,p22,p15,p5,p19,p7,p11,p8,p9"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p17,p3,p1,p18,p12,p4,p14,p20,p13,p16,p2,p6,p21,p22,p15,p5,p19,p7,p11,p8,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·(container{Pat ↦ {c} ⩤ container(Pat)})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_clone_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9,p10,p1,p11,p12,p13,p14,p15,p16,p17,p6,p18,p8,p2,p19,p20,p21,p7,p22,p23,p5"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components{Pat ↦ components(Pat) ∖ {c}}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∈(components{Pat ↦ components(Pat) ∖ {c}})(Pat) ⇸ (components{Pat ↦ components(Pat) ∖ {c}})(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat) ∖ {c}})"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_free_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p26,p9,p2,p11,p12,p13,p14,p15,p29,p3,p17,p4,p18,p5,p6,p7,p19,p20,p21,p23,p24,p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p16,p8,p27,p1,p26,p9,p2,p11,p12,p13,p14,p15,p3,p17,p4,p18,p5,p6,p7,p19,p20,p21,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat) ∖ {c}})"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_free_c ∖ {c})∪(container(Pat))∼[{c}]⊆(components{Pat ↦ components(Pat) ∖ {c}})(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_free_c ∖ {c}⊆components(Pat) ∖ {c}∧(container(Pat))∼[{c}]⊆components(Pat) ∖ {c}"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components{Pat ↦ components(Pat) ∖ {c}}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/p/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/m/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="VWD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p12"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒c∈dom(todo)∧todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈components[{Pat}]⇒c∈dom(todo)∧todo∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="FIN" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ goal in hyp" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</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="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="P=(∅ ⦂ ℙ(Component))∨1&gt;M∨finite(P)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="P ⇸ 1 ‥ M⊆ℙ(P × 1 ‥ M)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite((P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]⊆P ⇸ 1 ‥ M"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(ℙ(P × 1 ‥ M))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="P ⇸ 1 ‥ M"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ℙ(P × 1 ‥ M)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.hypOr"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/comp/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r1" 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="p27"/>
<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="p21,p3,p1,p5,p18,p7,p16,p8,p12,p24,p25,p6,p10,p22,p13,p17,p14,p15,p9,p2,p20,p19,p4,p11,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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(new_c)}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/cm/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p12">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (ran(new_c) × {1}∈Component ∖ union(ran(components)) ⇸ ℕ)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2,p3,p5,p14,p1,p7,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p15">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae (ran(new_c) × {1})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p16">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=ran(new_c) × {1}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p2,p3,p5,p14,p1,p7,p4,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p15"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(new_c) × {1}∈Component ∖ union(ran(components)) ⇸ ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ae∈Component ∖ union(ran(components)) ⇸ ℕ">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity{Pat ↦ c_multiplicity(Pat)∪ae}∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern⇒c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(ran(new_c) × {1})}∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤⇒c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ae=ran(new_c) × {1}">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ran(new_c) × {1}"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p30">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p30">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p5,p4,p8,p9,p33,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p12,p17,p2,p4,p7,p6,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p34">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p5,p4,p8,p9,p33,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p7,p2,p6,p28,p30,p34,p25,p1,p3,p5,p4,p8,p9,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p34">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p30">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p5,p4,p8,p9,p33,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p7,p2,p6,p28,p34,p30,p25,p1,p3,p5,p4,p8,p9,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p34">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p5,p4,p8,p9,p33,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p7,p2,p6,p28,p34,p25,p1,p3,p5,p4,p8,p9,p10,p11,p12,p13,p15,p14,p16,p18,p17,p19,p20,p21,p24,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(ran(new_c) × {1})})(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity(Pat)∪(ran(new_c) × {1})∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈components(Pat)∪ran(new_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m∈Pattern⇒(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(ran(new_c) × {1})})(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity(Pat)∪(ran(new_c) × {1})∈components(Pat)∪ran(new_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity(Pat)∪(ran(new_c) × {1})∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_multiplicity(Pat)∪(ran(new_c) × {1})∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_multiplicity(m)∈components(Pat)∪ran(new_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(ran(new_c) × {1})})(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_multiplicity(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈({Pat} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p14,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23,p10,p3,p1,p9,p2,p11,p12,p13,p14,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒(components{Pat ↦ components(Pat)∪ran(new_c)})(m1)∩(components{Pat ↦ components(Pat)∪ran(new_c)})(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae,ae0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p14">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p14">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((ran(new_c) × {c});container(Pat)∈Component ∖ union(ran(components)) ⇸ Component)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p6,p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p7,p6">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p2,p5,p14,p8,p7,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p7,p6,p17">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae ((ran(new_c) × {c});container(Pat))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p6,p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p7,p6,p18">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=(ran(new_c) × {c});container(Pat)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ({c} ⩤ container(Pat)∈components(Pat) ⇸ Component)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p3,p6,p7,p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p7,p6,p9,p3">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p1,p2,p5,p14,p8,p7,p6,p19,p9,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p7,p6,p9,p3,p23">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae ({c} ⩤ container(Pat))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p6,p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p7,p6,p24">
<org.eventb.core.prIdent name="ae0" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae0={c} ⩤ container(Pat)" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p2,p5,p14,p8,p7,p6,p19,p9,p3,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p23"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p17"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(ran(new_c) × {c});container(Pat)∈Component ∖ union(ran(components)) ⇸ Component"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ae0={c} ⩤ container(Pat)">
<org.eventb.core.prIdent name="ae0" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ae∈Component ∖ union(ran(components)) ⇸ Component">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ae=(ran(new_c) × {c});container(Pat)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container{Pat ↦ ae0∪ae}∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="ae0" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container{Pat ↦ ({c} ⩤ container(Pat))∪ae}∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="{c} ⩤ container(Pat)∈components(Pat) ⇸ Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ae0∈components(Pat) ⇸ Component">
<org.eventb.core.prIdent name="ae0" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="(ran(new_c) × {c});container(Pat)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="{c} ⩤ container(Pat)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/cont_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p19,p2,p6,p28,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p19,p2,p6,p28,p33,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p19,p2,p6,p28,p33,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p19,p2,p6,p28,p33,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p19,p2,p6,p33,p28,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p19,p2,p6,p33,p28,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p19,p2,p6,p33,p28,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25,p1,p3,p4,p5,p7,p8,p9,p32,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p19,p2,p6,p33,p25,p1,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p14,p16,p17,p18,p20,p21,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="container(m)∈components(m) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="container(m)∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container(m)∈components(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(new_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(new_c) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(new_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈({Pat} ⩤ components)(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(Pat)∪ran(new_c) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(m) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(m)∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈({Pat} ⩤ components)(m) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="container(m)∈components(Pat)∪ran(new_c) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(new_c) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="({Pat} ⩤ container)(m)∈components(Pat)∪ran(new_c) ⇸ components(Pat)∪ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="container(m)∈({Pat} ⩤ components)(m) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(Pat)∪ran(new_c) ⇸ components(Pat)∪ran(new_c)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(Pat)∪ran(new_c) ⇸ ({Pat} ⩤ components)(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(Pat)∪ran(new_c) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈(components{Pat ↦ components(Pat)∪ran(new_c)})(m) ⇸ (components{Pat ↦ components(Pat)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/acycl/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_free_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p3,p2,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_free_c⊆(components{Pat ↦ components(Pat)∪ran(new_c)})(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat)∪ran(new_c)})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(new_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/new_c_model/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p14,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p3,p1,p9,p2,p11,p12,p13,p14,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/new_c_mult/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p14,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p3,p1,p9,p2,p11,p12,p13,p14,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/new_c_container/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p14,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p3,p1,p9,p2,p11,p12,p13,p14,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/VAR" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬([[1]]∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬([[1]]∈sc∧(container(Pat))∼[sc]⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[1]]∈[[0]]∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[[[0]]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[1]]∈[[0]]∧(container(Pat))∼[[[0]]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c0⦂Component·c0∈(to_unfold_c ∖ {c})∪ran(to_clone_c∪(ran(new_c) × {c}))⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧¬(∀sc⦂ℙ(Component)·¬(c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c∪ran(to_clone_c)⇒(∀sc⦂ℙ(Component)·c∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component))∧{sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒¬(∀sc⦂ℙ(Component)·¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c0⦂Component·c0∈to_free_c⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧(∃sc⦂ℙ(Component)·¬¬(c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c0⦂Component·c0∈to_free_c⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧(∃sc⦂ℙ(Component)·c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(⋃c0⦂Component·c0∈to_free_c ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c0⦂Component·c0∈(to_unfold_c ∖ {c})∪ran(to_clone_c∪(ran(new_c) × {c})) ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(Pat))∼[sc]⊆sc ∣ sc}))⊂(⋃c⦂Component·c∈to_free_c ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c⦂Component·c∈to_unfold_c∪ran(to_clone_c) ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒(∃sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c0⦂Component·c0∈to_free_c⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧{sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒(∃sc⦂ℙ(Component)·¬¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c0⦂Component·c0∈to_free_c⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧¬(∀sc⦂ℙ(Component)·¬(c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(⋃c0⦂Component·c0∈to_free_c ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc ∣ sc})) × (⋃c0⦂Component·c0∈(to_unfold_c ∖ {c})∪ran(to_clone_c∪(ran(new_c) × {c})) ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧(({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat)))∼[sc]⊆sc ∣ sc}))⊂(⋃c⦂Component·c∈to_free_c ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c⦂Component·c∈to_unfold_c∪ran(to_clone_c) ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒{sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c∪ran(to_clone_c)⇒(∀sc⦂ℙ(Component)·c∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component))∧¬(∀sc⦂ℙ(Component)·¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c0⦂Component·c0∈(to_unfold_c ∖ {c})∪ran(to_clone_c∪(ran(new_c) × {c}))⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Pat∈dom(container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})∧container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))}∈Model ⇸ ℙ(Component × Component))∧{sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ ({c} ⩤ container(Pat))∪((ran(new_c) × {c});container(Pat))})(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/VAR" org.eventb.core.confidence="0" org.eventb.core.prFresh="sc,s,i,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrite ⊂ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬(sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬(sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[0]]⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆[[1]])∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆[[1]])∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆[[1]])∧(∀i,c,s·i ↦ c∈[[3]]∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆[[3]]))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[0]]⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆[[1]])∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆[[1]])∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆[[1]])∧(∀i,c,s·i ↦ c∈[[3]]∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆[[3]]))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r4" 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="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃sc·sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21,p22,p23,p24,p25">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃sc·sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26,p27,p28,p29,p30">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees sc)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p21,p32,p23,p24,p25">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p24"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p41">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i,c0,s)" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p48,p49">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬(sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬(sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[0]]⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆[[1]])∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆[[1]])∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆[[1]])∧(∀i,c,s·i ↦ c∈[[3]]∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆[[3]]))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[0]]⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆[[1]])∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆[[1]])∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆[[1]])∧(∀i,c,s·i ↦ c∈[[3]]∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆[[3]]))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r4" 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="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃sc·sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21,p22,p23,p24,p25">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃sc·sc⊆ℕ × components[{Pat}]∧(∀c·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26,p27,p28,p29,p30">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p26,p27,p28,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.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.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c0∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}]) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="i ↦ c0∈sc∧s ↦ c0∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="sc0⊆ℕ × components[{Pat}]">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)⇒sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="1 ‥ card(to_unfold_c_in[{c0}]) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}={sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c0∈ran(to_clone_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc0">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(to_clone_c∼[{c0}] ∖ {c}))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)⇒to_clone_c∈Component ⇸ Component∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c0∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c0) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(to_clone_c∼[{c0}] ∖ {c}))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)⇒c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="i ↦ c0∈sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc0">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)⇒sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·¬¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc0∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc0">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(({c} ⩤ to_clone_c)∼[{c0}]))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)⇒(∀c0⦂Component·c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component∧(c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬(∀sc⦂ℙ(ℤ×Component)·¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}⊆{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}⊂{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc0">
<org.eventb.core.prIdent name="sc0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬(∀sc⦂ℙ(ℤ×Component)·¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(({c} ⩤ to_clone_c)∼[{c0}]))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)⇒(∀c0⦂Component·c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component∧(c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·¬¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="sc⊆ℕ × components[{Pat}]">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="1 ‥ i∗c_multiplicity(s) × {s}⊆sc">
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(({c} ⩤ to_clone_c)∼[{c0}]))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)⇒(∀c0⦂Component·⊤∧to_clone_c∈Component ⇸ Component∧(c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(({c} ⩤ to_clone_c)∼[{c0}]) × {c0}⊆sc)∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}={sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc) ∣ sc}"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="1 ‥ 1+c_multiplicity(c0) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="s ↦ c0∈container">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)∧(∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆sc)∧(∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆sc)">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]⇒(∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ)∧((∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc)⇒(∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒finite(to_clone_c∼[{c0}] ∖ {c}))∧((∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒1 ‥ card(to_clone_c∼[{c0}] ∖ {c}) × {c0}⊆sc)⇒⊤∧to_clone_c∈Component ⇸ Component∧(∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒finite((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]))∧((∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒1 ‥ card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}]) × {c0}⊆sc)⇒(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒s∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ))))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="1 ‥ card(to_clone_c∼[{c0}]) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c0∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c0}]) × {c0}⊆sc">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c0∈dom(to_unfold_c_in)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.sir"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/f/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/VAR" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7,p8"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬([[1]]∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬([[1]]∈sc∧(container(Pat))∼[sc]⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[1]]∈[[0]]∧(container(Pat))∼[[[0]]] ∖ {c}⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[1]]∈[[0]]∧(container(Pat))∼[[[0]]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c0⦂Component·c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}]⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧(∃sc⦂ℙ(Component)·c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒¬(∀sc⦂ℙ(Component)·¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c0⦂Component·c0∈to_unfold_c∪ran(to_clone_c)⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧¬(∀sc⦂ℙ(Component)·¬(c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒(∃sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c0⦂Component·c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}]⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧¬(∀sc⦂ℙ(Component)·¬(c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒(∃sc⦂ℙ(Component)·¬¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c0⦂Component·Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧(c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}]⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧{sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ {c} ⩤ container(Pat)})(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component))))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(⋃c0⦂Component·c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}] ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ {c} ⩤ container(Pat)})(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c0⦂Component·c0∈to_unfold_c∪ran(to_clone_c) ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ {c} ⩤ container(Pat)})(Pat))∼[sc]⊆sc ∣ sc}))⊂(⋃c⦂Component·c∈to_free_c ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c⦂Component·c∈to_unfold_c∪ran(to_clone_c) ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈to_free_c⇒{sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c∪ran(to_clone_c)⇒{sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(⋃c0⦂Component·c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}] ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc ∣ sc})) × (⋃c0⦂Component·c0∈to_unfold_c∪ran(to_clone_c) ∣ {c0} × inter({sc⦂ℙ(Component)·c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc ∣ sc}))⊂(⋃c⦂Component·c∈to_free_c ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc})) × (⋃c⦂Component·c∈to_unfold_c∪ran(to_clone_c) ∣ {c} × inter({sc⦂ℙ(Component)·c∈sc∧(container(Pat))∼[sc]⊆sc ∣ sc}))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c0⦂Component·c0∈(to_free_c ∖ {c})∪(container(Pat))∼[{c}]⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧(∃sc⦂ℙ(Component)·¬¬(c0∈sc∧(container(Pat))∼[sc] ∖ {c}⊆sc))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c0⦂Component·c0∈to_unfold_c∪ran(to_clone_c)⇒(∀sc⦂ℙ(Component)·c0∈sc⇒Pat∈dom(container{Pat ↦ {c} ⩤ container(Pat)})∧container{Pat ↦ {c} ⩤ container(Pat)}∈Model ⇸ ℙ(Component × Component))∧{sc⦂ℙ(Component)·c0∈sc∧((container{Pat ↦ {c} ⩤ container(Pat)})(Pat))∼[sc]⊆sc ∣ sc}≠(∅ ⦂ ℙ(ℙ(Component)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c∪ran(to_clone_c)⇒¬(∀sc⦂ℙ(Component)·¬(c∈sc∧(container(Pat))∼[sc]⊆sc))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/to_unfold_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p8,p5,p2,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c⊆(components∪({Mdl} × ran(new_components)))[{Pat}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_unfold_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p8,p27,p9,p10,p2,p11,p12,p13,p14,p29,p15,p16,p4,p17,p18,p5,p6,p7,p20,p21,p22,p25,p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p24,p19,p3,p1,p8,p27,p9,p10,p2,p11,p12,p13,p14,p15,p16,p4,p17,p18,p5,p6,p7,p20,p21,p22,p25,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c ∖ {c})∪ran(cloned_c)⊆(components{Pat ↦ components(Pat)∪ran(cloned_c)})(Pat)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat)∪ran(cloned_c)})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components{Pat ↦ components(Pat)∪ran(cloned_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c ∖ {c}⊆components(Pat)∪ran(cloned_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_unfold_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p4,p1,p16,p17,p18,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components{Pat ↦ components(Pat) ∖ {c}}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components{Pat ↦ components(Pat) ∖ {c}})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c⊆(components{Pat ↦ components(Pat) ∖ {c}})(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cm/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst Pat)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p1">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p13">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p14">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈Component ⇸ ℕ)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p3,p2">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p4,p5,p8,p13,p14,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p3,p2,p17">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae (c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p3,p2,p18">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p4,p5,p8,p13,p14,p3,p2,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p17"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ae=c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ae∈Component ⇸ ℕ">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))∈Component ⇸ ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity{Pat ↦ ae}∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))}∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c_multiplicity(Pat)∪(cloned_c∼;c_multiplicity(Pat))"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/mult/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p25,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p9,p1,p2,p3,p4,p5,p6,p7,p8,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cm/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cm/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p14,p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ1)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})∈({Inst} ⩤ components)[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicityc_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈({Inst} ⩤ components)[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ1">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈dom(components)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="pc,ae,x,x0,x1,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p42">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p44">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p46,p42"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p50">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p7,p2,p9,p32,p20,p44"/>
<org.eventb.core.prHypAction name="SELECT6" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p29,p9,p31,p23,p5,p12,p27,p15,p35,p30,p22,p25,p16,p36,p13,p10,p17,p37,p28,p18,p1,p38,p33,p26,p8,p19,p3,p6,p24,p14,p11,p4,p32,p21,p2,p7,p20,p39,p42,p44,p46,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p46,p42"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p50">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p7,p2,p9,p32,p20,p44"/>
<org.eventb.core.prHypAction name="SELECT6" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p29,p9,p31,p23,p5,p12,p27,p15,p35,p30,p22,p25,p16,p36,p13,p10,p17,p37,p28,p18,p1,p38,p33,p26,p8,p19,p3,p6,p24,p14,p11,p4,p32,p21,p2,p7,p20,p39,p42,p44,p46,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p42,p58"/>
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ({pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈dom(inst_components) → ℕ)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p13,p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Mdl)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p70">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p70"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p2,p9,p7,p65,p25,p61,p32,p20,p44">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p63">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2,p9,p7,p25,p61,p20,p44"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p32,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p78,p79,p80">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with card(inst_components[{x}])=x0" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p79">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p80"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p63,p72">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae ({pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p63"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p63,p83">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae={pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p83">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2,p9,p63,p25,p61,p20,p44"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p7,p32,p84">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p72"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p86">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p86,p42"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p29,p9,p31,p23,p5,p12,p27,p15,p35,p30,p22,p25,p16,p36,p13,p10,p17,p37,p28,p18,p1,p38,p33,p26,p8,p19,p3,p6,p24,p14,p11,p4,p32,p21,p2,p7,p20,p39,p42,p86,p46,p55,p91">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p2,p42,p7,p25,p58,p86,p32,p20">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="c_multiplicity(Inst)=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="c_mult_others∈components(Inst) ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="c_multiplicity(m)∈(∅ ⦂ ℙ(Component)) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈dom(inst_components) ⇸ ℕ"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="card(inst_components[{x}])=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="pc∈dom(inst_components)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈(∅ ⦂ ℙ(Component)) → ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀x⦂Component,x0⦂ℤ,x1⦂ℤ·x∈dom(inst_components)∧card(inst_components[{x}])=x0∧card(inst_components[{x}])=x1⇒x0=x1"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="pat_roots=components(Pat) ∖ dom(container(Pat))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="x∈dom(inst_components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components(Mdl))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="ae={pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container(Pat)=container(Inst);inst2pat_c"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})=dom(inst_components)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="c_multiplicity(m)∈({Inst} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="ae∈dom(inst_components) → ℕ">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="pat_roots=components(Inst) ∖ dom(container(Inst))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Pattern"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="Mdl∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="card(inst_components[{x}])=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="c_multiplicity(m)=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="m∈Pattern⇒(c_multiplicity{Pat ↦ c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}})(m)∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="pc∈dom(inst_components)⇒finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="c_mult_othersae∈components(Pat) → ℕ">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(c_multiplicity{Pat ↦ c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}})(m)∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀x⦂Component,x0⦂ℤ,x1⦂ℤ·x ↦ x0∈{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∧x ↦ x1∈{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}⇒x0=x1"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="inst_components∈components(Inst) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="inst_components[{pc}]⊆components(Mdl)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬Inst=Pat"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈dom(inst_components) ↔ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈({Inst} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈({Inst} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="({Pat} ⩤ c_multiplicity)(m)∈(∅ ⦂ ℙ(Component)) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_mult_others=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="x∈dom(inst_components)∧card(inst_components[{x}])=x0∧card(inst_components[{x}])=x1⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(c_multiplicity{Pat ↦ c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}})(m)∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬pc∈dom(inst_components)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀pc⦂Component·¬pc∈dom(inst_components)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Mdl"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components(Mdl)"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="pc" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prRule name="r1" 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="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p32" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p26,p9,p28,p6,p8,p11,p3,p18,p17,p23,p20,p7,p27,p12,p1,p21,p15,p14,p2,p4,p24,p10,p25,p16,p13,p22,p29,p33,p35">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="pc∈dom(inst_components)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="pc∈dom(inst_components)⇒finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_clone_c_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for inst2pat_c(c)" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c∈dom(c_index)∧c_index∈Component ⇸ ℤ∧inst2pat_c∈Component ⇸ Component∧inst2pat_c(c)∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(c_index)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(c_index)∧c_index∈Component ⇸ ℤ∧inst2pat_c∈Component ⇸ Component∧inst2pat_c(c)∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈dom(inst2pat_c)⇒c∈dom(c_index)∧c_index∈Component ⇸ ℤ∧inst2pat_c∈Component ⇸ Component∧inst2pat_c(c)∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst2pat_c(c)∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="inst2pat_c(c)∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_clone_c_mult/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(∅ ⦂ ℙ(Component×Component))⇒(∅ ⦂ ℙ(Component×ℤ))(c)∈1 ‥ c_mult((∅ ⦂ ℙ(Component×Component))(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/c_index_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p1,p3,p19,p20,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_index∪new_c∼∈dom(to_clone_c∪(ran(new_c) × {c})) ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_clone_c_mult/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p3,p1,p9,p2,p11,p12,p13,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(c_index∪new_c∼)⇒(c_index∪new_c∼)(c0)∈1 ‥ (c_multiplicity{Pat ↦ c_multiplicity(Pat)∪(ran(new_c) × {1})})(Pat)((to_clone_c∪(ran(new_c) × {c}))(c0))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/c_index_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="{c} ⩤ c_index∈dom(to_clone_c) ∖ {c} ⇸ ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{c} ⩤ c_index∈dom({c} ⩤ to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_clone_c_mult/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1.1"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(c_index)⇒c_index(c0)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c0))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(c_index)⇒c_index(c0)∈1 ‥ c_multiplicity(Pat)(({c} ⩤ to_clone_c)(c0))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="comp_finite/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p4">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<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 name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="(∀m⦂Model·m∈dom(components))∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="m∈dom(components)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p24,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of range of a function" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p13,p14,p15,p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p16,p2,p7,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p37">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p24,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p37,p20,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.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(components(Pat)∪ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(components(Pat))∧finite(ran(new_c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="finite((components{Pat ↦ components(Pat)∪ran(new_c)})(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="finite(1 ‥ c_multiplicity(Pat)(c))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(({Pat} ⩤ components)(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="finite(components(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ⇸ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components{Pat ↦ components(Pat)∪ran(new_c)})(m))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="finite(components(Pat))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="1 ‥ c_multiplicity(Pat)(c) ⇸ Component ∖ union(ran(components))"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRan"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p26">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p1,p23,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p20,p21,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p32">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p29">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of range of a function" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p1,p15,p18,p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p15,p7,p26,p32,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p13,p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p29"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p15,p7,p26,p32,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p40">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p40,p12,p15,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="finite((components{Pat ↦ components(Pat)∪ran(cloned_c)})(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components{Pat ↦ components(Pat)∪ran(cloned_c)})(m))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ⇸ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="finite(({Pat} ⩤ components)(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="finite(components(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="finite(ran(cloned_c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="finite((container(Pat))∼[{to_clone_c(c)}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(components(Pat)∪ran(cloned_c))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]⊆components(Pat)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(components(Pat))∧finite(ran(cloned_c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(components(Pat))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components(Pat)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="(container(Pat))∼[{to_clone_c(c)}] ⇸ Component ∖ union(ran(components))"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRan"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p16,p10,p2,p12,p11,p14,p8,p1,p5,p19,p20,p13,p4,p17,p6,p9,p7,p15,p21,p22,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p27">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p16,p10,p2,p12,p11,p14,p8,p1,p5,p19,p20,p13,p4,p17,p6,p9,p7,p15,p21,p22,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="finite(components(Pat) ∖ {c})"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(({Pat} ⩤ components)(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(components(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="finite((components{Pat ↦ components(Pat) ∖ {c}})(m))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components{Pat ↦ components(Pat) ∖ {c}})(m))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="m=Pat">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p16">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (m=Mdl)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Mdl" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (ran(new_components)=new_components[components[{Inst}] ∖ dom(inst_components)])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p3,p4,p1,p5,p29,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ran(new_components)=new_components[components[{Inst}] ∖ dom(inst_components)]" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of relational image of a function" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p4"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p36">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p36"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p32"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p38">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (({Mdl} × ran(new_components))[{m}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p38,p3,p4,p1,p5,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p39">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ({Mdl} × ran(new_components))[{m}]=∅" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p39"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p29"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬m∈dom({Mdl} × ran(new_components))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="finite(({Mdl} × ran(new_components))[{Mdl}])"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="new_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬m=Mdl">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ran(new_components)=new_components[components[{Inst}] ∖ dom(inst_components)]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="finite(components[{m}]∪({Mdl} × ran(new_components))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="finite(components[{Inst}])"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="finite(components[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components[{Inst}] ∖ dom(inst_components)⊆components[{Inst}]"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(new_components[components[{Inst}] ∖ dom(inst_components)])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(components[{Inst}] ∖ dom(inst_components))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="finite(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite((components∪({Mdl} × ran(new_components)))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite(components[{m}])∧finite(({Mdl} × ran(new_components))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(ran(new_components))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="m=Mdl">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(({Mdl} × ran(new_components))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components∪({Mdl} × ran(new_components)))[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="({Mdl} × ran(new_components))[{m}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="Inst"/>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="Component ⇸ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRelImg"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_clone_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈({Inst} ⩤ components)[{Inst}] ⇸ ({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_index_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℤ))∈dom(∅ ⦂ ℙ(Component×Component)) → ℕ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_free_to_clone_disjoint/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(components)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_free_to_clone_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p21,p4,p2,p6,p23,p18,p8,p16,p9,p13,p24,p25,p7,p11,p22,p15,p17,p20,p19,p5,p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p3,p1,p21,p4,p2,p6,p23,p18,p8,p16,p9,p13,p24,p25,p7,p11,p22,p15,p17,p20,p19,p5,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_clone_c∪(ran(new_c) × {c}))∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_free_to_clone_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p18,p12,p4,p14,p20,p13,p17,p10,p3,p6,p22,p23,p15,p5,p19,p8,p11,p24,p21,p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p16,p9,p1,p18,p12,p4,p14,p20,p13,p17,p10,p3,p6,p22,p23,p15,p5,p19,p8,p11,p24,p21,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(({c} ⩤ to_clone_c)∪cloned_c∼)∩(to_free_c∪{c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_free_to_clone_disjoint/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="fun. singleton img. in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<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="∧ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p1">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p4">
<org.eventb.core.prRule name="r3" 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="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r4" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r4" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r4" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈ran(container(Pat))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_clone_c)∩((to_free_c ∖ {c})∪{(container(Pat))∼(c)})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈dom((container(Pat))∼)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom((container(Pat))∼)∧(container(Pat))∼∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_clone_c)∩((to_free_c ∖ {c})∪(container(Pat))∼[{c}])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.funSingletonImg"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_free_dom_to_clone_disjoint/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩(components(Pat) ∖ dom(container(Pat)))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_free_dom_to_clone_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p2,p11,p12,p13,p15,p26,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p10,p3,p1,p9,p2,p11,p12,p13,p15,p16,p17,p4,p18,p19,p5,p20,p6,p7,p8,p21,p22,p23,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_clone_c∪(ran(new_c) × {c}))∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_free_dom_to_clone_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p8,p25,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p16,p9,p1,p2,p3,p4,p5,p6,p8,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(({c} ⩤ to_clone_c)∪cloned_c∼)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_free_dom_to_clone_disjoint/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r1" 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="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="fun. singleton img. in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p17"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p26"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p1,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p14,p15,p18,p19,p17"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p20,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p18,p19,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p30"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_clone_c)∩((to_free_c ∖ {c})∪(container(Pat))∼[{c}])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(dom(to_clone_c)∩(to_free_c ∖ {c}))∪(dom(to_clone_c)∩{(container(Pat))∼(c)})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom((container(Pat))∼)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬(container(Pat))∼(c)∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c⊆{c}"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(container(Pat))∼∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c⊆{c}∧¬(container(Pat))∼(c)∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈ran(container(Pat))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(dom(to_clone_c)∩(to_free_c ∖ {c}))∪(dom(to_clone_c)∩(container(Pat))∼[{c}])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom((container(Pat))∼)∧(container(Pat))∼∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funSingletonImg"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_dom_to_clone_disjoint/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩(components(Pat) ∖ dom(container(Pat)))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_unfold_dom_to_clone_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p22,p4,p2,p6,p24,p18,p8,p16,p9,p13,p25,p26,p7,p11,p23,p14,p17,p15,p20,p19,p5,p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p21,p10,p3,p1,p22,p4,p2,p6,p24,p18,p8,p16,p9,p13,p25,p26,p7,p11,p23,p14,p17,p15,p20,p19,p5,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_clone_c∪(ran(new_c) × {c}))∩(to_unfold_c ∖ {c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_clone_c)∩to_unfold_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_unfold_dom_to_clone_disjoint/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="instanciation_started∈BOOL">
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="end_instanciation/p_WD/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p20,p14,p4,p17,p22,p15,p19,p12,p3,p7,p23,p24,p18,p6,p21,p8,p13,p5,p9"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p1,p11,p16,p2,p20,p14,p4,p17,p22,p15,p19,p12,p3,p7,p23,p24,p18,p6,p21,p8,p13,p5,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="instanciation_started" org.eventb.core.type="BOOL"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="instanciation_started=TRUE"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="instanciation_started∈BOOL"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_free_to_unfold_disjoint/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components(Pat) ∖ dom(container(Pat)))∩(∅ ⦂ ℙ(Component))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_c/to_free_to_unfold_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p22,p4,p2,p6,p24,p19,p8,p17,p9,p13,p25,p26,p7,p11,p23,p14,p18,p15,p21,p20,p5,p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p10,p3,p1,p22,p4,p2,p6,p24,p19,p8,p17,p9,p13,p25,p26,p7,p11,p23,p14,p18,p15,p21,p20,p5,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c ∖ {c})∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_free_to_unfold_disjoint/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p19,p4,p2,p5,p21,p17,p7,p15,p9,p11,p23,p24,p6,p10,p20,p12,p16,p13,p25,p22,p8"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p14,p18,p3,p1,p19,p4,p2,p5,p21,p17,p7,p15,p9,p11,p23,p24,p6,p10,p20,p12,p16,p13,p25,p22,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((to_unfold_c ∖ {c})∪ran(cloned_c))∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_free_to_unfold_disjoint/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬c∈to_unfold_c">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∉to_unfold_c">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_free_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components(Pat) ∖ dom(container(Pat))⊆components(Pat)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/cm/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p4,p5,p6,p7,p8,p24,p9,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p18,p3,p1,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity{Pat ↦ {c} ⩤ c_multiplicity(Pat)}∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/to_clone_c_mult/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p16,p3,p1,p2,p4,p5,p6,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(c_index)⇒c_index(c0)∈1 ‥ (c_multiplicity{Pat ↦ {c} ⩤ c_multiplicity(Pat)})(Pat)(to_clone_c(c0))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="free_c/c_mult/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p22,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p16,p3,p1,p2,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∉to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_free_c/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p3,p4,p6,p7,p8,p9,p24,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p18,p1,p5,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_clone_c)∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩to_free_c=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_free_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_unfold_c_in/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Inst∈dom(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst_root/WD"/>
<org.eventb.core.prProof name="unfold_c/to_unfold_c_in/INV"/>
<org.eventb.core.prProof name="clone_c/to_unfold_c_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p29,p20,p22,p23,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c})∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/to_unfold_c_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p8,p9,p6,p3,p2,p7,p5,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c_in∈(components∪({Mdl} × ran(new_components)))[{Pat}] ↔ (components∪({Mdl} × ran(new_components)))[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/comp/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p4,p6,p7,p8,p9,p10,p11,p12,p13,p1,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈dom(components)">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Inst ↦ (∅ ⦂ ℙ(Component))}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pat∈dom(container)">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="finite(({Inst} ⩤ components)[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite(components[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="({Inst} ⩤ components)[{m}]⊆components[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite(({Inst} ⩤ components)[{m}])"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p28,p10,p30,p19,p31,p7,p4,p20,p6,p18,p12,p25,p21,p8,p29,p14,p1,p22,p16,p15,p3,p5,p26,p11,p27"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p17,p13,p23,p24,p2,p28,p10,p30,p19,p31,p7,p4,p20,p6,p18,p12,p25,p21,p8,p29,p14,p1,p22,p16,p15,p3,p5,p26,p11,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="({Inst} ⩤ components)∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="pat_roots=components[{Pat}] ∖ dom(container)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p2,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{Inst} ⩤ components;(components[{Inst}] ⩤ container);({Inst} ⩤ components)∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_c_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈({Inst} ⩤ components)[{Pat}] ↔ ({Inst} ⩤ components)[{Inst}]"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat_root/WD"/>
<org.eventb.core.prProof name="free_c/to_unfold_c_in/INV"/>
<org.eventb.core.prProof name="instanciate_pattern/pat_roots/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<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,p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p10" 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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_ty/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p27,p28,p5,p6,p7,p8,p9,p29,p30,p11,p12,p14,p15,p16,p31,p17,p20,p21,p22,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ container∈ran({Inst} ⩤ components) ⇸ ran({Inst} ⩤ components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/acycl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1,p3,p11,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·components[{Inst}] ⩤ container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧components[{Inst}] ⩤ container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧components[{Inst}] ⩤ container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/new_c_ty/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23,p24,p25,p26,p27,p28,p15,p29,p30,p31,p32,p33,p18,p34,p35,p21,p36,p37,p38,p39"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p46,p47,p9,p10,p11,p12,p13,p14,p16,p44,p17,p48,p49,p19,p20,p40,p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50,p51,p52">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p50,p51,p52"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p40,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p8"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components(m))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="c∈components[{Pat}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model → ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈dom(components)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(components)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/comp/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Inst ↦ components(Inst)∪ran(new_c)}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p15">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p2">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p1,p2,p5,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="finite(components[{m}])∧finite(({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="finite((components∪({Inst} × ran(new_c)))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(components[{m}]∪({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({Inst} × ran(new_c))[{m}]⊆ran(new_c)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite(components[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components∪({Inst} × ran(new_c)))[{m}])"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="ran(new_c)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p27,p11,p30,p19,p31,p8,p5,p20,p7,p17,p13,p23,p21,p9,p29,p14,p1,p22,p16,p15,p3,p6,p24,p12,p26,p28,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p18,p4,p2,p27,p11,p30,p19,p31,p8,p5,p20,p7,p17,p13,p23,p21,p9,p29,p14,p1,p22,p16,p15,p3,p6,p24,p12,p26,p28,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cont_ctr/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p18,p33,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)));container;(components∪({Inst} × ran(new_c)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p44">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p31,p8,p33,p4,p12,p27,p15,p36,p32,p20,p25,p16,p37,p13,p10,p17,p38,p29,p18,p1,p39,p34,p26,p7,p19,p2,p5,p23,p14,p11,p3,p21,p6,p30,p28,p9,p24,p40,p41,p44,p46,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p25,p21,p6,p44,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_multiplicity(Inst)∈components(Inst)∪ran(new_c) → ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="m∈Pattern⇒c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c;container(Pat)=container(Inst);inst2pat_c"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="c_multiplicity(m)∈({Inst} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Inst∈Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_multiplicity(m)∈components(Inst)∪ran(new_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" 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.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/to_unfold_c_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p13,p14,p2,p15,p16,p5,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p4,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p7"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p2,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∈(components∪({Inst} × ran(new_c)))[{Pat}] ↔ (components∪({Inst} × ran(new_c)))[{Inst}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="containers;containers⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/to_clone_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" 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">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})∈(components∪({Inst} × ran(new_c)))[{Inst}] ⇸ (components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_index_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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,p4,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_index∪new_c∼∈dom(inst2pat_c∪(ran(new_c) × {c})) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/to_clone_c_mult/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p17,p18,p33,p19,p20,p21,p22,p24,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_index∪new_c∼)(c0)∈1 ‥ c_multiplicity((inst2pat_c∪(ran(new_c) × {c}))(c0))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/to_unfold_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c ∖ {c}⊆(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/new_c_model/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_ty/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23,p24,p25,p26,p27,p28,p14,p29,p30,p31,p32,p33,p17,p34,p35,p21,p36,p37,p38,p39"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p5,p42,p43,p44,p8,p9,p10,p11,p12,p13,p15,p16,p45,p46,p19,p20,p22,p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p48,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p5,p42,p43,p44,p8,p9,p10,p11,p12,p13,p15,p16,p45,p46,p19,p20,p22,p47"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components(m))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈components[{Pat}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model → ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈dom(components)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(components)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components(Pat)">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/comp/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components{Inst ↦ components(Inst)∪ran(new_c)}∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/comp_finite/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p16">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (m=Inst)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (ran(new_c)=new_c[1 ‥ c_multiplicity(c)])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p29,p3,p4,p5,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p1,p34,p3">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ran(new_c)=new_c[1 ‥ c_multiplicity(c)]" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p34">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of relational image of a function" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2,p1,p34,p29,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p34"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p38">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (({Inst} × ran(new_c))[{m}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p4,p38,p5,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p39">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ({Inst} × ran(new_c))[{m}]=∅" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p39"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p29"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite(components[{m}])∧finite(({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="finite(({Inst} × ran(new_c))[{Inst}])"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite((components∪({Inst} × ran(new_c)))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="finite(components[{m}]∪({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(new_c[1 ‥ c_multiplicity(c)])"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(1 ‥ c_multiplicity(c))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="finite(components[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="({Inst} × ran(new_c))[{m}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬m∈dom({Inst} × ran(new_c))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((components∪({Inst} × ran(new_c)))[{m}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="finite(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(({Inst} × ran(new_c))[{m}])">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(new_c)=new_c[1 ‥ c_multiplicity(c)]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRelImg"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/comp_disj/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p26,p11,p30,p18,p31,p8,p5,p19,p7,p17,p13,p22,p20,p9,p29,p14,p1,p21,p16,p15,p3,p6,p23,p12,p25,p27,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p28,p4,p2,p26,p11,p30,p18,p31,p8,p5,p19,p7,p17,p13,p22,p20,p9,p29,p14,p1,p21,p16,p15,p3,p6,p23,p12,p25,p27,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_ctr/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p17,p33,p18,p19,p20,p21,p22,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)));(container∪(ran(new_c) × {dest}));(components∪({Inst} × ran(new_c)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cm_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p44">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p30,p8,p33,p4,p12,p26,p15,p36,p31,p20,p24,p16,p37,p13,p10,p17,p38,p28,p18,p1,p39,p34,p25,p7,p19,p2,p5,p22,p14,p11,p3,p32,p6,p29,p27,p9,p23,p40,p41,p44,p46,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p24,p32,p6,p44,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_multiplicity(Inst)∈components(Inst)∪ran(new_c) → ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="m∈Pattern⇒c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="m∈Pattern">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst2pat_c;container(Pat)=container(Inst);inst2pat_c"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity(m)∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="c_multiplicity(m)∈({Inst} ⩤ components)(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Inst∈Pattern"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c_multiplicity(m)∈components(m) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_multiplicity(m)∈components(Inst)∪ran(new_c) → ℕ">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" 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.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/to_unfold_c_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p12,p13,p2,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p3,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p6"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p4,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∈(components∪({Inst} × ran(new_c)))[{Pat}] ↔ (components∪({Inst} × ran(new_c)))[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="containers;containers⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/to_clone_c/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p2,p18,p5,p19,p20,p21,p22,p23,p24,p1,p25,p26,p27,p28,p29,p6,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})∈(components∪({Inst} × ran(new_c)))[{Inst}] ⇸ (components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_index_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="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,p3,p29,p30"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_index∪new_c∼∈dom(inst2pat_c∪(ran(new_c) × {c})) → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/to_clone_c_mult/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p16,p17,p33,p18,p19,p20,p21,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_index∪new_c∼)(c0)∈1 ‥ c_multiplicity((inst2pat_c∪(ran(new_c) × {c}))(c0))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/to_unfold_c/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c⊆(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_model/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p4,p22,p23,p1,p24,p25,p26,p27,p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p2,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∪(ran(new_c) × {dest})∈ran(components∪({Inst} × ran(new_c))) ⇸ ran(components∪({Inst} × ran(new_c)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/acycl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p12">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13,p14,p15,p16">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13,p14,p15,p16"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (m=Inst)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p17">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p15,p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ goal (inst ((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p14,p19,p1,p2,p17,p3,p18,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p14,p19,p1,p2,p17,p3,p18,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p14,p19,p1,p2,p17,p3,p18,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p14,p19,p1,p2,p17,p3,p18,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p13,p14,p2,p3,p28,p15,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p17"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧container(Inst)⊆f∧ran(new_c) × {dest}⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧(container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧container(Inst)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∧ran(new_c) × {dest}⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∧(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f);(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∧(id ⦂ ℙ(Component×Component))∩(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧container(Inst)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∧(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f);(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∧(id ⦂ ℙ(Component×Component))∩(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container(Inst)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="f∈components(Inst) ↔ components(Inst)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container(m)⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧(container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})})(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Inst) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst)∧(container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})})(Inst)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f);(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)⊆((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container(Inst)⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="f∈components(m) ↔ components(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩(((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f)=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="((ran(new_c) × {dest});f)∪(ran(new_c) × {dest})∪f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.exI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_container/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/to_unfold_c_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<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.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/VAR" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p55" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r1" 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="p57"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p59" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p61" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p9,p10,p63,p11,p12,p13,p14,p15,p16,p17,p19,p64,p20,p21,p65,p22,p23,p24,p25,p66,p26,p52,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p67,p68,p38,p69,p39,p70,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrite ⊂ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p6,p7,p9,p10,p63,p11,p12,p13,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p52,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p39,p68,p70,p69,p66,p81"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p77,p80,p35,p76"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (todo ∖ {k·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}=todo)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87,p88"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p87,p88"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p88"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ with ∖ in todo⊆todo ∖ {k·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89,p90"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p89,p90"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p90"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (todo∩{k·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p89" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91,p92"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p91,p92"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p92"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in todo∩{k·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}⊆∅" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (max(ran(c_multiplicity))=0)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p63">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p98">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with max(ran(c_multiplicity))=0" org.eventb.core.prHyps="p98">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p86" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="DESELECT7" org.eventb.core.prHyps="p84,p94,p10,p86,p79,p78,p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p100"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in todo∈ℙ({∅})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p109"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1,p2,p71,p99,p3,p4,p5,p106,p6,p7,p9,p11,p12,p13,p14,p15,p16,p17,p18,p19,p64,p21,p65,p22,p23,p24,p25,p26,p52,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p67,p38,p40,p42,p109,p44,p45,p46,p47,p48,p83,p49,p50,p51,p108"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p111"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p115"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p116" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p117"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p118" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p18"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p121">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_multiplicity(c)∈ran(c_multiplicity))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p22,p50">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p123">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="p22,p50">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="p22,p63,p18,p74,p98,p6,p121,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p22,p50,p124">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p22,p63,p18,p74,p98,p6,p121,p50,p124">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p124"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p125">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp ((P ⇸ 1 ‥ M) ∖ (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]=(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72,p126"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p72,p126"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p111"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p115"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p116" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p117"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p118" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p127"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p128"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p72,p126"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p127" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p128" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p127,p128"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p129"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p131"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p131"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p18"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p121">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (ran(new_c)≠∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p28,p121,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p134">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p134" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p135"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (new_c=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p135" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p136"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p136"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p136" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p137"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in new_c⊆∅" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p137" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p138"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p138"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p138" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p139"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀x,x0·¬x ↦ x0∈new_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p139" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p140"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p140"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬[[1]] ↦ [[0]]∈new_c" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p140" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p141"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x,x0·x ↦ x0∈new_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p141" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p142"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst {c ↦ x})" org.eventb.core.prHyps="p131">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p131"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p143">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p131"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p143" org.eventb.core.prHyps="p84,p28,p2,p1,p5,p18,p42,p142,p50,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p144">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p131"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prHyps="p144,p28,p1,p142,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</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="2"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p134"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p98"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.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.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(∀s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x))∧c0∈dom(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))})∧todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))}∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ 0)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬new_c⊆(∅ ⦂ ℙ(ℤ×Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="max(ran(c_multiplicity))=0"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="todo∈ℙ({∅ ⦂ ℙ(Component×ℤ)})">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(∀s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x))∧c0∈dom(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))})∧todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))}∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="x ↦ x0∈new_c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="(∅ ⦂ ℙ(ℙ(Component×ℤ)))⊆todo∩{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="todo∩{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}=(∅ ⦂ ℙ(ℙ(Component×ℤ)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬⊥∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="todo∩{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}⊆(∅ ⦂ ℙ(ℙ(Component×ℤ)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="c_multiplicity(c)∈ran(c_multiplicity)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ)·x∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]⇒x∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="todo⊆todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="(P ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆(P ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}=todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="¬(∀x⦂ℤ,x0⦂Component·¬x ↦ x0∈new_c)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="{c ↦ x}∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="¬(new_c⊆(∅ ⦂ ℙ(ℤ×Component))∧(∅ ⦂ ℙ(ℤ×Component))⊆new_c)"/>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → (∅ ⦂ ℙ(ℤ))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬(∀x⦂ℤ,x0⦂Component·x ↦ x0∈new_c⇒x ↦ x0∈(∅ ⦂ ℙ(ℤ×Component)))"/>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∃x⦂ℤ,x0⦂Component·x ↦ x0∈new_c"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="M=0"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ 0)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]=(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ {∅ ⦂ ℙ(Component×ℤ)}"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]⊆(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}⊆todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ 0∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊂(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="todo⊆todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ)·¬x∈todo∩{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="{c ↦ x}∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}=todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ)·¬x∈todo∩{k⦂ℤ·k∈1 ‥ 0 ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="(P ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]⊆(P ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ 0⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="ran(new_c)≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(∀s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x))∧c0∈dom(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ ran(new_c) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))})∧todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ ran(new_c) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))}∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ)·x∈todo∩{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ {c ↦ k}}⇒x∈(∅ ⦂ ℙ(ℙ(Component×ℤ)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(∀s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x))∧c0∈dom(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ ran(new_c) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))})∧todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ ran(new_c) × (containers∼[{s}] → 0 ‥ max(ran(c_multiplicity)))}∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="todo⊆{∅ ⦂ ℙ(Component×ℤ)}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ 0⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]=(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∃x⦂ℤ,x0⦂Component·¬¬x ↦ x0∈new_c"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬new_c=(∅ ⦂ ℙ(ℤ×Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬max(ran(c_multiplicity))=0"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="{c ↦ x}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.sir"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.inclusionSetMinusRightRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/VAR" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,ae,x,x0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes[dom(inst2pat_c)]⊂(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p45"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrite ⊂ in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p57,p28,p25,p3,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (c_indexes[dom(inst2pat_c)]=(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p62" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60,p64"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p60,p64"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (dom(inst2pat_c∪(ran(new_c) × {c})))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in hyp ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c)∪dom(ran(new_c) × {c})])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p65" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67,p68"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c)])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(ran(new_c) × {c})])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72,p73"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p73,p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(ran(new_c) × {c})=ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p10,p56,p11,p12,p13,p70,p14,p15,p16,p17,p18,p76,p19,p20,p77,p21,p22,p23,p24,p78,p26,p55,p27,p29,p60,p30,p31,p32,p33,p34,p35,p36,p37,p79,p80,p38,p81,p39,p73,p41,p82,p43,p46,p47,p48,p49,p50,p51,p52,p53"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p80,p81,p78,p82"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p85,p88,p35,p84"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p75">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(ran(new_c) × {c})=ran(new_c)" org.eventb.core.prHyps="p75">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in {i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[ran(new_c)]⊆c_indexes[dom(inst2pat_c)]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (ran(new_c)≠∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p10,p56,p11,p12,p13,p70,p14,p15,p16,p17,p18,p76,p19,p20,p77,p21,p22,p23,p24,p78,p26,p55,p27,p72,p29,p60,p30,p31,p32,p33,p34,p35,p36,p37,p79,p80,p38,p81,p39,p73,p41,p82,p43,p46,p47,p48,p49,p50,p51,p52,p53"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p80,p81,p78,p82"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p85,p88,p35,p84"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p34">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p97">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="p1,p2,p83,p3,p4,p5,p75,p6,p7,p8,p9,p10,p56,p11,p12,p13,p70,p90,p14,p15,p16,p17,p18,p20,p21,p22,p57,p23,p24,p25,p26,p55,p27,p72,p28,p29,p60,p30,p31,p32,p33,p36,p37,p94,p38,p73,p41,p43,p46,p47,p48,p49,p50,p89,p51,p52,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p98">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p75,p28,p98">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p95">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬new_c=∅" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p99"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x,x0·x ↦ x0∈new_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p100"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c_indexes(dest){c ↦ x})" org.eventb.core.prHyps="p94">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p94"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p10,p56,p11,p12,p13,p70,p14,p15,p16,p17,p18,p76,p19,p20,p77,p21,p22,p23,p24,p78,p26,p55,p27,p72,p29,p60,p30,p31,p32,p33,p34,p35,p36,p37,p79,p80,p94,p38,p81,p39,p73,p41,p82,p43,p46,p47,p48,p49,p50,p51,p52,p53"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p80,p81,p78,p82"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p85,p88,p35,p84"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1,p2,p83,p3,p4,p5,p75,p6,p7,p8,p9,p10,p56,p11,p12,p13,p70,p90,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p100,p25,p26,p55,p27,p72,p28,p29,p60,p30,p31,p32,p33,p34,p36,p37,p94,p38,p104,p73,p41,p43,p46,p47,p48,p49,p50,p89,p51,p52,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p105">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p39"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p102,p105" org.eventb.core.prUnsel="p102,p105">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p94"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="p102,p105" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p5,p100,p108">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p102,p105,p109" org.eventb.core.prUnsel="p102,p105">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p94"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,dest,x)" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p110">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="p102,p105" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p115" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p28,p3,p5,p109,p75,p100,p108,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p34">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p97">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="p28,p3,p5,p109,p75,p100,p108,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p98">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="lae in goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p28,p3,p5,p109,p75,p98,p100,p108,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p121">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="p102,p105" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p115" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p122,p109">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p75"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="0"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p54,p45">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆P ⇸ 1 ‥ M)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p45"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p10,p56,p11,p12,p13,p14,p15,p16,p17,p18,p76,p19,p20,p77,p21,p22,p23,p24,p78,p26,p55,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p79,p80,p38,p81,p39,p41,p82,p43,p46,p47,p48,p49,p50,p51,p52,p53"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p124">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p80,p81,p78,p82"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p85,p88,p35,p84"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p90,p28,p10,p5,p54,p21,p6,p57,p52,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p123,p45">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p45"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p126,p45">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p126">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p127"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p123" org.eventb.core.prInfHyps="p128"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p123,p54"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p126"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p57,p28,p3,p25,p5"/>
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p129" org.eventb.core.prHyps="p127,p128">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p54"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="c_indexes[dom(inst2pat_c)]⊂ae">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x∈1 ‥ M">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊤∧⊤∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="ae=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[ran(new_c)]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c)]∪(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="x ↦ x0∈new_c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c_indexes[dom(inst2pat_c)]⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆P ⇸ 1 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c_indexes[dom(inst2pat_c)]⊂(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c)]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="⊤∧x∈1 ‥ M">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_indexes[dom(inst2pat_c)]=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬c_indexes(dest){c ↦ x}∈ran(c_indexes)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊂(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="x≤max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="c_indexes(dest){c ↦ x}∉ran(c_indexes)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀i⦂Component·¬i∈ran(new_c)"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆P ⇸ 1 ‥ M"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x≤M">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="(P ⇸ 1 ‥ M) ∖ ae⊂(P ⇸ 1 ‥ M) ∖ c_indexes[dom(inst2pat_c)]">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∃x⦂ℤ,x0⦂Component·x ↦ x0∈new_c"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="dom(ran(new_c) × {c})=ran(new_c)"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="c_indexes(dest){c ↦ x}∈c_indexes[dom(inst2pat_c)]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬c_indexes[dom(inst2pat_c)]=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[dom(inst2pat_c)]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="1≤x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes[dom(ran(new_c) × {c})]∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c)∪dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in∧x∈1 ‥ M">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ)·x∈{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[ran(new_c)]⇒x∈c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="c_indexes(dest){c ↦ x}∈{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[ran(new_c)]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="ran(new_c)≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes[dom(ran(new_c) × {c})]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊥∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_indexes[dom(inst2pat_c)]∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}[dom(inst2pat_c)]⊆c_indexes[dom(inst2pat_c)]"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬new_c=(∅ ⦂ ℙ(ℤ×Component))"/>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i){c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="ae⊆P ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e4" org.eventb.core.expression="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})[dom(inst2pat_c∪(ran(new_c) × {c}))]"/>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="c_indexes(dest){c ↦ x}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="dest"/>
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.locEq"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.sir"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r25" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inst_2_pat_c/WD"/>
<org.eventb.core.prProof name="instanciate_pattern/inst_2_pat_c/INV"/>
<org.eventb.core.prProof name="unfold_root_c/inst_2_pat_c/INV"/>
<org.eventb.core.prProof name="unfold_node_c/inst_2_pat_c/INV"/>
<org.eventb.core.prProof name="apply_pattern/inst_2_pat_c/INV"/>
<org.eventb.core.prProof name="pat2inst_c_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Inst∈dom(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="pat2inst_c_correct/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<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="p8,p10">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p14"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p6"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst Pat)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p6"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p30">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p19,p1,p2,p23,p4,p5,p30,p7,p9,p11,p12,p13,p14,p15,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for c_multiplicity(Pat)" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p32"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c∈Component ⇸ ℙ(ℤ × Component)∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℕ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c∈dom(pat2inst_c)⇒pat2inst_c∈Component ⇸ ℙ(ℤ × Component)∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="pat2inst_c∈Component ⇸ ℙ(ℤ × Component)∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c∈Component ⇸ ℙ(ℤ × Component)∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈dom(pat2inst_c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c∈Component ⇸ ℙ(ℤ × Component)∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="pat2inst_c∈Component ⇸ ℙ(ℤ × Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_c_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p4,p5,p1,p3,p6,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(Pat) ⇸ {∅ ⦂ ℙ(ℤ×Component)}"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))∈(components{Inst ↦ (∅ ⦂ ℙ(Component))})(Pat) ⇸ (ℕ ⇸ (components{Inst ↦ (∅ ⦂ ℙ(Component))})(Inst))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))∈components(Pat) ⇸ {∅ ⦂ ℙ(ℤ×Component)}"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))∈({Inst} ⩤ components)(Pat) ⇸ {∅ ⦂ ℙ(ℤ×Component)}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))∈(∅ ⦂ ℙ(Component)) ⇸ {∅ ⦂ ℙ(ℤ×Component)}"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="pat_roots=components(Pat) ∖ dom(container(Pat))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_c_correct/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))⇒(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))(c)∈1 ‥ (c_multiplicity{Pat ↦ c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}})(Pat)(c) → (components{Inst ↦ (∅ ⦂ ℙ(Component))})(Inst)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p7,p5"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst Pat)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p1">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p18">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p13">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p19,p15,p2,p16,p3"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p6,p20,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst Pat)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p1">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p18">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p18,p2,p3,p5,p21,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Pat) ⇸ (ℕ ⇸ (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈({Inst} ⩤ components)(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈components(Inst)∪ran(new_c) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity(Pat)∈components(Pat) → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity(Inst)∈components(Inst) → ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="pat2inst_c∈components(Inst) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst∈Pattern"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈components(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_c_correct/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1,p2,p3,p12,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p2,p3,p10,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="({c} ⩤ pat2inst_c)(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)∪ran(new_c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c0∈dom(pat2inst_c{c ↦ new_c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="pat2inst_c(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p44">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p34,p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p46,p12,p13,p14,p15,p44,p16,p17,p18,p19,p20,p21,p41,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p47,p32,p33,p34,p35,p36,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p5,p48,p6,p18,p34">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components{Inst ↦ components(Inst)∪ran(new_c)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈components(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Pat) ⇸ (ℕ ⇸ (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst∈dom(components{Inst ↦ components(Inst)∪ran(new_c)})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(components{Inst ↦ components(Inst)∪ran(new_c)})"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈components(Inst)∪ran(new_c) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="pat2inst_c∈components(Inst) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="pat2inst_c{c ↦ new_c}∈({Inst} ⩤ components)(Pat) ⇸ (ℕ ⇸ components(Inst)∪ran(new_c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_c_correct/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1,p3,p2,p12,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p3,p2,p10,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="({c} ⩤ pat2inst_c)(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)∪ran(new_c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c0∈dom(pat2inst_c{c ↦ new_c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈dom(pat2inst_c{c ↦ new_c})⇒(pat2inst_c{c ↦ new_c})(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="pat2inst_c(c0)∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c0) → components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/pat2inst_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prRule name="r1" 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="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Inst=Mdl" org.eventb.core.prHyps="p51">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p37,p22,p7,p33,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p35,p8,p40,p3,p11,p31,p14,p30,p36,p25,p26,p16,p44,p12,p9,p15,p41,p28,p45,p39,p32,p21,p23,p2,p6,p46,p42,p17,p1,p4,p29,p10,p38,p27,p5,p37,p24,p22,p13,p20,p7,p33,p34,p18,p19,p47,p49,p51,p53,p54,p55,p56,p57,p58">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p35,p8,p40,p3,p11,p31,p14,p30,p36,p25,p26,p16,p44,p12,p9,p15,p41,p28,p45,p39,p32,p21,p23,p2,p6,p46,p42,p17,p1,p4,p29,p10,p38,p27,p5,p37,p24,p22,p13,p20,p7,p33,p34,p18,p19,p47,p49,p59,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Inst=Mdl" org.eventb.core.prHyps="p51">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p37,p22,p7,p33"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p62,p51,p66,p54,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p39"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="inst_components∈components(Mdl) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="pat2inst_c∈(components{Mdl ↦ components(Mdl)∪ran(new_components)})(Pat) ⇸ (ℕ ⇸ (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="inst_components∼;container(Mdl);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="pat2inst_c∈({Mdl} ⩤ components)(Pat) ⇸ (ℕ ⇸ ({Mdl} ⩤ components)(Inst))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components{Mdl ↦ components(Mdl)∪ran(new_components)}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst∈dom(components{Mdl ↦ components(Mdl)∪ran(new_components)})"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Mdl)⊆inst_components∼"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="pat2inst_c∈components(Mdl) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ ({Mdl} ⩤ components)(Inst))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="pat2inst_c∈components(Mdl)∪ran(new_components) ⇸ (ℕ ⇸ (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Pat∈dom(components{Mdl ↦ components(Mdl)∪ran(new_components)})"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="new_components∈components(Mdl) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="pat2inst_c∈components(Mdl)∪ran(new_components) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Mdl)∪ran(new_components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="pat2inst_c∈({Mdl} ⩤ components)(Pat) ⇸ (ℕ ⇸ (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst=Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="pat2inst_c∈components(Mdl)∪ran(new_components) ⇸ (ℕ ⇸ components(Mdl)∪ran(new_components))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="pat2inst_c∈({Mdl} ⩤ components)(Pat) ⇸ (ℕ ⇸ components(Mdl)∪ran(new_components))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="pat2inst_c∈components(Mdl) ⇸ (ℕ ⇸ components(Mdl))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Mdl))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="pat2inst_c∈components(Mdl)∪ran(new_components) ⇸ (ℕ ⇸ ({Mdl} ⩤ components)(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/pat2inst_c_correct/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p6">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p8">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Inst=Mdl" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p16,p12,p10,p18,p14"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"/>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Mdl)⊆inst_components∼">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈dom(pat2inst_c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst=Mdl"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → ({Mdl} ⩤ components)(Inst)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∈components(Mdl) ⤔ components(Mdl)">
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="new_components∈components(Mdl) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))">
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Mdl)∪ran(new_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Mdl)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(Inst)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="inst_components∼;container(Mdl);inst_components⊆container(Mdl)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))">
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)">
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(∅ ⦂ ℙ(Component×Component))⊆dom(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_unfold/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}])∩ran(∅ ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p2,p3,p1,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2,p3,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(to_clone_c)∪ran(ran(new_c) × {c})⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(ran(new_c) × {c})⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c{c ↦ new_c})∧ran(ran(new_c) × {c})⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(to_clone_c∪(ran(new_c) × {c}))⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_unfold/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" 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="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c∪(ran(new_c) × {c}))⊆{c}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c ∖ {c})∩ran(inst2pat_c∪(ran(new_c) × {c}))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/pat2inst_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran({c} ⩤ to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/pat2inst_unfold/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_clone/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(to_clone_c∪(ran(new_c) × {c}))⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_unfold/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p16,p17,p33,p19,p20,p21,p22,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c∪(ran(new_c) × {c}))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩dom(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_unfold_in/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p1,p2,p3,p5,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/pat2inst_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p5,p3,p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p5,p7,p3">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p6,p5,p8,p3,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p20,p1,p5,p7,p3">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4,p6"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p5,p8,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p20"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(dom(to_unfold_c_in)∩dom(pat2inst_c))∪(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩dom(pat2inst_c))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c}))∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_unfold_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom({c} ⩤ to_unfold_c_in)∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c{c ↦ new_c})⊆{c}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_unfold_in/THM" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prRule name="r1" 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="p30"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p6,p9,p4,p2,p13,p23,p3,p24,p11,p16,p25,p5,p19,p26,p18,p10,p21,p7,p27,p1,p20,p15,p14,p12,p8,p17,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_root/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" 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="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(components[{Pat}] ∖ dom(container))∩dom(container)⊆c_mult∼[{0}]∪components[{Inst}]"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}])∩dom(components[{Inst}] ⩤ container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))⊆dom(components[{Inst}] ⩤ container)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_root/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" 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="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c ∖ {c})∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)⊆{c}"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⊆dom(container)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_root/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p15,p16,p17,p33,p18,p19,p20,p21,p22,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c∩dom(container∪(ran(new_c) × {dest}))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p5,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⊆dom(container∪(ran(new_c) × {dest}))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_root/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p27,p28,p5,p6,p7,p8,p9,p29,p30,p11,p14,p15,p16,p31,p18,p19,p20,p21,p23,p24,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c∩dom(container∪(new_components∼;container;(inst_components∪new_components)))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p8,p5,p2,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container∪(new_components∼;container;(inst_components∪new_components)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="pat2inst_cont/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))[ran(∅ ⦂ ℙ(Component×Component))]⊆ran(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/pat2inst_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3,p4,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c{c ↦ new_c})]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/pat2inst_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p43">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p5,p45"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p31,p8,p34,p3,p13,p26,p16,p25,p32,p20,p22,p17,p38,p14,p11,p18,p35,p24,p39,p28,p9,p1,p40,p36,p23,p6,p19,p2,p4,p30,p33,p5,p29,p27,p10,p21,p15,p7,p12,p41,p43,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19,p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19,p51,p50"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p30,p33,p5,p48,p19">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})})(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})})"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {dest})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(container(Inst)∪(ran(new_c) × {dest}))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(container(Inst))[dom(pat2inst_c)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(({Inst} ⩤ container)(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/pat2inst_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p43">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p30,p7,p33,p3,p10,p26,p13,p25,p31,p21,p22,p14,p38,p11,p9,p15,p35,p24,p39,p27,p8,p1,p40,p36,p23,p5,p16,p2,p4,p29,p32,p19,p17,p12,p18,p6,p28,p34,p20,p41,p43">
<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="(" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p47">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p29"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(({Mdl} ⩤ container)(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(container(Mdl))[dom(pat2inst_c)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(container(Pat))[ran(inst2pat_c)]⊆ran(inst2pat_c)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_cont/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/clone_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))∼[ran(∅ ⦂ ℙ(Component×Component))]∩dom(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/clone_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3,p7"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p5,p2,p3,p7,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3,p7"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (container(Pat)∩id=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p8,p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p8,p9">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p23">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container(Pat)⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24,p25,p26">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p24,p25,p26"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p26,p2,p3,p4,p5,p25,p7,p24,p8,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p22,p8,p9">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p22,p8,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p22"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="((container(Pat))∼[ran(to_clone_c)]∪(container(Pat))∼[ran(ran(new_c) × {c})])∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)∪ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="((container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c}))∪((container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c}))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container(Pat)⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container(Pat)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))∧(container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container(Pat)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/clone_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(container(Pat))∼[ran({c} ⩤ to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/clone_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="x0,x" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prRule name="r1" 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="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p46,p17,p18,p19,p20,p21,p22,p44,p23,p24,p25,p26,p27,p28,p29,p30,p48,p31,p32,p49,p33,p34,p35,p36,p37,p38,p39,p41,p42,p43">
<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="(" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x)" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x∈(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p62" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64,p65"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x∈dom(pat2inst_c{c ↦ new_c})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p65" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x0·x ↦ x0∈pat2inst_c{c ↦ new_c})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (x=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p69">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x=c" org.eventb.core.prHyps="p69">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p67"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p72"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p73">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p13,p4,p50,p5,p64,p21,p22,p67,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p69"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p72,p22"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p34">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p13,p4,p50,p5,p27,p76,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c_in∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂Component·¬x∈(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c ↦ x0∈pat2inst_c{c ↦ new_c}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(container(Inst))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(({Inst} ⩤ container)(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="x∈(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬x∈(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀x⦂Component·x∈(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})⇒x∈(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})⊆(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="((container(Pat))∼[ran(to_clone_c)]∪(container(Pat))∼[ran(ran(new_c) × {c})])∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)∪ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="x ↦ x0∈pat2inst_c{c ↦ new_c}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="((container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c}))∪((container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c}))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)}))∼[ran(to_clone_c∪(ran(new_c) × {c}))]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="x∈dom(pat2inst_c{c ↦ new_c})">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="(container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∃x0⦂ℙ(ℤ×Component)·x ↦ x0∈pat2inst_c{c ↦ new_c}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c∈(container(Pat))∼[ran(to_clone_c)]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="x∈(container(Pat))∼[ran(to_clone_c)]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="(∅ ⦂ ℙ(Component))⊆(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))∧(container(Pat))∼[ran(ran(new_c) × {c})]∩dom(pat2inst_c{c ↦ new_c})=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="container(Pat)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/clone_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r1" 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="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p33,p8,p37,p3,p11,p30,p14,p29,p34,p24,p25,p16,p43,p12,p9,p15,p40,p27,p44,p38,p31,p18,p21,p2,p6,p45,p41,p17,p1,p4,p28,p10,p36,p26,p5,p35,p22,p19,p13,p20,p7,p32,p39,p23,p46,p48,p50">
<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="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(({Mdl} ⩤ container)(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(container(Mdl))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="irrefl/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(∀m⦂Model·m∈dom(container))∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m∈Model">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·m∈dom(container)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="m∈dom(container)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="irrefl/THM" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p15,p11,p18,p8,p9,p6,p2,p17,p12,p3,p13,p10,p1,p14,p7,p4,p16,p19">
<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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<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.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_pat/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_pat/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))[dom(∅ ⦂ ℙ(Component×Component))]⊆dom(∅ ⦂ ℙ(Component×ℙ(ℤ×Component)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cont_pat/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/cont_pat/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p6,p3,p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p6,p8,p3">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p20,p1,p6,p8,p3">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p22">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((container(Pat))∼;container(Pat)⊆id)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p6,p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p6,p8">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1,p22,p2,p3,p5,p6,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p6,p8,p25">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((container(Pat))[(container(Pat))∼[{to_clone_c(c)}]]⊆{to_clone_c(c)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p6,p3,p8">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p6,p8,p3">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p22,p2,p3,p25,p5,p6,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p1,p6,p26,p8,p3">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p7"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p1,p22,p2,p3,p25,p5,p6,p26,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p26"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p25"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p20"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(container(Pat))[(container(Pat))∼[{to_clone_c(c)}]]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]∪(container(Pat))[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)∧(container(Pat))[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(container(Pat))∼;container(Pat)⊆(id ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c})]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤∧(container(Pat))[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(container(Pat))[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(container(Pat))[(container(Pat))∼[{to_clone_c(c)}]]⊆{to_clone_c(c)}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_pat/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p50">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p36,p12,p40,p3,p16,p32,p19,p31,p37,p25,p27,p21,p44,p17,p14,p20,p41,p29,p45,p39,p34,p23,p24,p2,p8,p46,p42,p22,p1,p4,p30,p15,p38,p28,p6,p7,p5,p35,p33,p13,p26,p18,p11,p10,p9,p47,p50,p52,p53">
<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="(" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p54">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p38,p7,p5,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c_in∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(container(Inst))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in) ∖ {c}]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))[dom(to_unfold_c_in) ∖ {c}]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))[dom({c} ⩤ to_unfold_c_in)]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)}))[dom(to_unfold_c_in) ∖ {c}]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(({Inst} ⩤ container)(Pat))[dom(to_unfold_c_in) ∖ {c}]⊆dom(pat2inst_c{c ↦ new_c})"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_pat/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r1" 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="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p33,p8,p37,p3,p11,p30,p14,p29,p34,p24,p25,p16,p43,p12,p9,p15,p40,p27,p44,p38,p31,p18,p21,p2,p6,p45,p41,p17,p1,p4,p28,p10,p36,p26,p5,p35,p22,p19,p13,p20,p7,p32,p39,p23,p46,p48,p50">
<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="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p36"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(({Mdl} ⩤ container)(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(container(Mdl))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_cont_cl/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_cont_cl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))∼[ran(∅ ⦂ ℙ(Component×Component))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_cont_cl/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p5,p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p5,p6">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p20,p21"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p2" org.eventb.core.prHyps="p2"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p2,p5,p6">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p3,p2,p4,p1,p5,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)])∪(dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))∧dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)∪ran(ran(new_c) × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container(Pat))∼[ran(to_clone_c)]∪(container(Pat))∼[ran(ran(new_c) × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/unfold_in_cont_cl/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1,p4,p2,p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p4,p5,p2">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p17,p1,p4,p5,p2">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p17"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p17"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[ran({c} ⩤ to_clone_c)])∪(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[ran({c} ⩤ to_clone_c)])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="(dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[ran({c} ⩤ to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_cont_cl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r1" 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="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p29,p4"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p49,p17,p51,p18,p19,p20,p21,p22,p46,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p52,p35,p36,p37,p38,p39,p40,p41,p43,p44,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p53">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p4,p53,p5,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p63">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p64">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19,p37"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19,p37,p22"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p29,p5,p4,p53,p63,p64,p19,p37,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]⊆{c}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c_in∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})]⊆{c}"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]⊆{c}"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)])∪(dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})])⊆{c}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)}))∼[ran(to_clone_c∪(ran(new_c) × {c}))]⊆{c}"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Inst} ⩤ container)(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]⊆{c}"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom({c} ⩤ to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]⊆{c}∧dom(to_unfold_c_in)∩(container(Pat))∼[ran(ran(new_c) × {c})]⊆{c}"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container(Pat))∼[ran(to_clone_c)]∪(container(Pat))∼[ran(ran(new_c) × {c})])⊆{c}"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[ran(to_clone_c∪(ran(new_c) × {c}))]⊆{c}"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)∪ran(ran(new_c) × {c})]⊆{c}"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="container(Pat)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_in_cont_cl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prRule name="r1" 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="p48"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p34,p8,p38,p3,p11,p31,p14,p30,p35,p24,p25,p16,p44,p12,p9,p15,p41,p27,p45,p39,p32,p18,p21,p2,p6,p46,p42,p17,p1,p4,p28,p10,p37,p29,p26,p5,p36,p22,p19,p13,p20,p7,p33,p40,p23,p47,p49,p51">
<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="(" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p52">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p29"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Mdl} ⩤ container)(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_cont_unf/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_cont_unf/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))∼[pat_roots]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_cont_unf/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c ∖ {c}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/unfold_in_cont_unf/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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1,p6,p2,p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1,p6,p7,p2">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p19,p1,p6,p7,p2">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5,p1,p21,p6,p2,p7"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p22">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p4,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p19"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c])∪(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[to_unfold_c])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_cont_unf/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p50">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p28,p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p36,p12,p40,p3,p16,p32,p19,p31,p37,p25,p27,p21,p44,p17,p14,p20,p41,p29,p45,p39,p34,p23,p24,p2,p8,p46,p42,p22,p1,p4,p30,p15,p38,p28,p6,p7,p5,p35,p33,p13,p26,p18,p11,p10,p9,p47,p50,p52,p53">
<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="(" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p54">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p28,p7,p5,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom({c} ⩤ to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c_in∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]⊆{c}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[to_unfold_c]⊆{c}"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Inst} ⩤ container)(Pat))∼[to_unfold_c]⊆{c}"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)}))∼[to_unfold_c]⊆{c}"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_in_cont_unf/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r1" 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="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p33,p8,p37,p3,p11,p30,p14,p29,p34,p24,p25,p16,p43,p12,p9,p15,p40,p27,p44,p38,p31,p18,p21,p2,p6,p45,p41,p17,p1,p4,p28,p10,p36,p26,p5,p35,p22,p19,p13,p20,p7,p32,p39,p23,p46,p48,p50">
<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="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p26"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Mdl} ⩤ container)(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_cont_unfold_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_cont_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(∅ ⦂ ℙ(Component×Component))∩((container{Inst ↦ (∅ ⦂ ℙ(Component×Component))})(Pat))∼[dom(∅ ⦂ ℙ(Component×Component))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/unfold_in_cont_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p18,p34,p27,p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p18,p34,p36,p27">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p54,p18,p34,p36,p27">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23,p17"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p13,p54,p14,p15,p39,p19,p20,p21,p22,p56,p24,p25,p26,p28,p29,p30,p31,p32,p33,p37,p38"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p5,p27,p18,p34,p36,p16,p17,p23,p1,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p13,p54,p14,p15,p39,p19,p20,p21,p22,p24,p25,p26,p28,p29,p30,p31,p32,p33,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p54"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ right in goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∪ / ∩ distribution in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p18,p34,p27,p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p18,p34,p36,p27">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p54,p18,p34,p36,p27">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p64">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p64">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p18,p64,p27,p5,p34,p16,p36,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p54"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p18,p34,p27,p36">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p18,p34,p36,p27">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p54,p18,p34,p36,p27">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p64">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p67">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p18,p64,p27,p5,p67,p34,p36">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p54"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]∩(container(Pat))∼[(container(Pat))∼[{to_clone_c(c)}]]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))])∪(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="(dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})=(container(Pat))∼[{to_clone_c(c)}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)])∪(dom(to_unfold_c_in)∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)∪dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))∧dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container(Pat))∼[dom(to_unfold_c_in)]∪(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))∧dom(to_unfold_c_in)∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom(to_unfold_c_in)])∪(dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[(container(Pat))∼[{to_clone_c(c)}]]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="(container(Pat))∼[{to_clone_c(c)}]∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dom((container(Pat))∼[{to_clone_c(c)}] × {c})∩((container(Pat))∼[dom(to_unfold_c_in)]∪(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})])=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in∪((container(Pat))∼[{to_clone_c(c)}] × {c}))]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[ran(to_clone_c)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="⊤∧dom(to_unfold_c_in)∩(container(Pat))∼[dom((container(Pat))∼[{to_clone_c(c)}] × {c})]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="container(Pat)∈components(Pat) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="container(Pat)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.unionInterDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionRightRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_cont_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p50">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p50">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p6,p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p36,p12,p40,p3,p16,p32,p19,p31,p37,p25,p27,p21,p44,p17,p14,p20,p41,p29,p45,p39,p34,p23,p24,p2,p8,p46,p42,p22,p1,p4,p30,p15,p38,p28,p6,p7,p5,p35,p33,p13,p26,p18,p11,p10,p9,p47,p50,p52,p53">
<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="(" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p54">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p6,p7,p5,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈dom(to_unfold_c_in)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c_in∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in) ∖ {c}]⊆{c}"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pat=Inst"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom({c} ⩤ to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[dom({c} ⩤ to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬Pat=Inst"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})(Pat))∼[dom(to_unfold_c_in) ∖ {c}]⊆{c}"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Inst)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈dom(container{Inst ↦ container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)})})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Inst} ⩤ container)(Pat))∼[dom(to_unfold_c_in) ∖ {c}]⊆{c}"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Inst)∪(ran(new_c) × {to_unfold_c_in(c)}))∼[dom(to_unfold_c_in) ∖ {c}]⊆{c}"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_in_cont_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r1" 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="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p48">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p33,p8,p37,p3,p11,p30,p14,p29,p34,p24,p25,p16,p43,p12,p9,p15,p40,p27,p44,p38,p31,p18,p21,p2,p6,p45,p41,p17,p1,p4,p28,p10,p36,p26,p5,p35,p22,p19,p13,p20,p7,p32,p39,p23,p46,p48,p50">
<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="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p51">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p30">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="p5"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0.0"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pat=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈dom(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in)∩((container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components)))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="dom(to_unfold_c_in)∩(({Mdl} ⩤ container)(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Pat=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pat∈dom(container{Mdl ↦ container(Mdl)∪((inst_components∪new_components)∼;container(Inst);(inst_components∪new_components))})"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_clone/THM" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<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="p16,p14,p20,p10,p12,p15,p3,p5,p4,p13,p7,p11,p18,p17,p1,p8,p21,p19,p2,p22,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inst2pat_c_ty/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)∧Pat∈dom(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inst2pat_unfold_in/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst2pat_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈({Inst} ⩤ components)[{Inst}] → ({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst2pat2_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))⊆(∅ ⦂ ℙ(Component×Component))∼"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst2pat_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component));(∅ ⦂ ℙ(Component×Component))⊆components[{Inst}] ⩤ container"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/inst2pat_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5,p6,p7,p8,p9,p10,p11,p4,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p4,p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="inst2pat_c∪(ran(new_c) × {c})∈(components∪({Inst} × ran(new_c)))[{Inst}] → (components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/inst2pat2_clone/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p9"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c⊆(inst2pat_c∪(ran(new_c) × {c}))∼∧ran(new_c) × {c}⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(new_c) × {c}⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/inst2pat2_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{c} ⩤ to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/inst2pat_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p3,p4,p5,p6,p7,p8,p24,p9,p10,p11,p12,p13,p14,p15,p16,p18,p19,p20,p21,p22,p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}));inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/inst2pat_c_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p2,p16,p17,p18,p19,p20,p21,p22,p23,p24,p1,p25,p26,p27,p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p4,p5,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="inst2pat_c∪(ran(new_c) × {c})∈(components∪({Inst} × ran(new_c)))[{Inst}] → (components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/inst2pat2_clone/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p2,p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p9"/>
</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="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_clone_c⊆(inst2pat_c∪(ran(new_c) × {c}))∼∧ran(new_c) × {c}⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(new_c) × {c}⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∼"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c⊆(inst2pat_c∪(ran(new_c) × {c}))∼"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/inst2pat_unfold_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p16,p17,p33,p18,p19,p20,p21,p22,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)));(inst2pat_c∪(ran(new_c) × {c}))⊆container∪(ran(new_c) × {dest})"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst2pat_c_ty/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p27,p28,p5,p6,p7,p8,p9,p29,p30,p11,p12,p14,p15,p16,p31,p18,p19,p20,p21,p23,p25,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="inst2pat_c∈(components∪({Mdl} × ran(new_components)))[{Inst}] → (components∪({Mdl} × ran(new_components)))[{Pat}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst2pat_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p8,p9,p6,p3,p2,p7,p5,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container∪(new_components∼;container;(inst_components∪new_components))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="inst2pat_cont/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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,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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧Inst∈dom(container)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Inst∈dom(container)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst∈Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst2pat_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component));(components[{Inst}] ⩤ container)=components[{Inst}] ⩤ container;(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/inst2pat_unfold_in/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p17,p18,p33,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)));(inst2pat_c∪(ran(new_c) × {c}))⊆container"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/inst2pat_cont/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p4,p7,p29,p30,p8,p9,p10,p11,p12,p31,p32,p13,p14,p15,p17,p18,p33,p19,p21,p22,p23,p24,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}));container=container;(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/inst2pat_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p9,p10,p6,p11,p12,p13,p14,p15,p16,p4,p17,p18,p19,p20,p21,p22,p23,p24,p25,p2,p26,p27,p28,p29,p7,p30,p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}));(container∪(ran(new_c) × {dest}))=(container∪(ran(new_c) × {dest}));(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst2pat_cont/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8,p9,p10,p11,p12,p13,p14,p15,p7,p16,p2,p17,p18,p19,p20,p21,p3,p22,p23,p24,p25,p26,p27,p6,p28,p29"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="inst2pat_c;(container∪(new_components∼;container;(inst_components∪new_components)))=(container∪(new_components∼;container;(inst_components∪new_components)));inst2pat_c"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/inst2pat_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))⊆(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/inst2pat_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∪(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})⊆inst2pat_c∪(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/inst2pat_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{c} ⩤ to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/inst2pat_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prRule name="r1" 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="p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p31,p13,p35,p9,p11,p15,p5,p21,p20,p26,p23,p10,p33,p16,p1,p24,p18,p17,p3,p7,p27,p14,p29,p25,p30,p19,p12,p34,p6,p32,p28,p4,p2,p36,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒todo(c)=card(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒todo(c)=card(to_clone_c∼[{c}])"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_clone_c⊆inst2pat_c∪(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_clone_c∪(ran(new_c) × {c})⊆inst2pat_c∪(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/ps3/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p9" 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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Inst∈dom(container)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(container)"/>
<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.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/acycl_inst_components/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="Component,Model">
<org.eventb.core.lang name="L"/>
<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,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="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)∧Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(container)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl∈Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Mdl∈dom(container)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/acycl_container/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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(container)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(container)∧container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/acycl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (m=Inst)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p15">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·f∈components(Inst) ↔ components(Inst)∧container(Inst)⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16,p17,p18,p19">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p16,p17,p18,p19"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ goal (inst f)" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p18,p16,p19">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r0" 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="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p16,p1,p19,p3,p12,p17,p18">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p24">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25,p16,p26,p18">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p25,p16,p26,p18"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ goal (inst f)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p25,p18,p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p31"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p31"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p31"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p26"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p12"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧container(Inst)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(Inst) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(Inst)∧container(Inst)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="f∈({Inst} ⩤ components)(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="f∈({Inst} ⩤ components)(m) ↔ components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="f∈components(m) ↔ ({Inst} ⩤ components)(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="f∈components(Inst) ↔ components(Inst)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ components(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="f∈components(m) ↔ components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container(m)⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧container(Inst)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="f∈({Inst} ⩤ components)(m) ↔ ({Inst} ⩤ components)(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧⊤∧⊤∧⊤">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ ({Inst} ⩤ components)(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container(Inst)⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="m=Inst">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈(components{Inst ↦ components(Inst)∪ran(new_c)})(m) ↔ (components{Inst ↦ components(Inst)∪ran(new_c)})(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="f∈components(m) ↔ components(m)">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈components(Inst) ↔ components(Inst)∧container(Inst)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="f∈components(Inst)∪ran(new_c) ↔ components(Inst)∪ran(new_c)∧⊤∧⊤∧⊤">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Inst"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.exI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cont_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p5,p4,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∈ran(components∪({Inst} × ran(new_c))) ⇸ ran(components∪({Inst} × ran(new_c)))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cm/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p27,p11,p30,p19,p31,p8,p10,p5,p20,p7,p17,p23,p21,p9,p29,p14,p1,p22,p16,p15,p3,p6,p24,p12,p26,p28,p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p18,p4,p2,p27,p11,p30,p19,p31,p8,p10,p5,p20,p7,p17,p23,p21,p9,p29,p14,p1,p22,p16,p15,p3,p6,p24,p12,p26,p28,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Inst} × ran(new_c)))[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cm/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p26,p11,p30,p18,p31,p8,p10,p5,p19,p7,p17,p22,p20,p9,p29,p14,p1,p21,p16,p15,p3,p6,p23,p12,p25,p27,p24"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p13,p28,p4,p2,p26,p11,p30,p18,p31,p8,p10,p5,p19,p7,p17,p22,p20,p9,p29,p14,p1,p21,p16,p15,p3,p6,p23,p12,p25,p27,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Inst} × ran(new_c)))[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cm/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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p28,p10,p30,p19,p31,p7,p9,p4,p20,p6,p18,p24,p22,p8,p29,p14,p1,p23,p16,p15,p3,p5,p25,p11,p26"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p12,p27,p21,p13,p17,p2,p28,p10,p30,p19,p31,p7,p9,p4,p20,p6,p18,p24,p22,p8,p29,p14,p1,p23,p16,p15,p3,p5,p25,p11,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Mdl} × ran(new_components)))[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/comp_not_shared/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="({Inst} ⩤ components)∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_mult/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="x,x0,x1" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p14,p15,p16,p43,p18,p19,p44,p20,p21,p23,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p45" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p48,p49">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈(dom(inst_components) ⩤ c_mult_others)∪{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p55" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈(dom(inst_components) ⩤ c_mult_others)∪{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p54" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈dom(inst_components) ⩤ c_mult_others∨(x∈dom(inst_components)∧card(inst_components[{x}])=x0))" org.eventb.core.prHyps="p56">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p59">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p56" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p1,p2,p3,p4,p59,p5,p6,p7,p8,p9,p10,p11,p12,p13,p58,p14,p15,p16,p17,p18,p19,p20,p21,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p61,p62">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p56" org.eventb.core.prHyps="p61,p62" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with card(inst_components[{x}])=x0" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p62">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p65" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p1,p2,p68,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p61,p18,p19,p20,p21,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p62,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p7,p8,p9,p10,p11,p12,p14,p15,p16,p43,p18,p19,p44,p20,p21,p23,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p77" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p78">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p78" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0.0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</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="0"/>
</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="0.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="dom(inst_components)⊆({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="({Inst} ⩤ components)[{Pat}]⊆((components[{Pat}] ∖ dom(inst_components)) ∖ dom(inst_components))∪dom(inst_components)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="dom((dom(inst_components) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="dom(dom(inst_components) ⩤ c_mult_others)∪dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="x ↦ x0∈dom(inst_components) ⩤ c_mult_others∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈({Inst} ⩤ components)[{Pat}] ↔ ℕ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others∨(⊤∧card(inst_components[{x}])=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others∨card(inst_components[{x}])=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="x ↦ x0∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∧x ↦ x1∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="card(inst_components[{x}])=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others∨(x∈dom(inst_components)∧card(inst_components[{x}])=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="x∈dom(inst_components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="(components[{Pat}] ∖ dom(inst_components)) ∖ dom(inst_components)⊆({Inst} ⩤ components)[{Pat}]∧dom(inst_components)⊆({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="x ↦ x1∈(dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="x ↦ x0∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="card(inst_components[{x}])=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="(components[{Pat}] ∖ dom(inst_components)) ∖ dom(inst_components)⊆({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="dom(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="x ↦ x0∈(dom(inst_components) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="x ↦ x1∈dom(inst_components) ⩤ c_mult_others∨x ↦ x1∈{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈({Inst} ⩤ components)[{Pat}] ⇸ ℕ"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="x ↦ x0∈dom(inst_components) ⩤ c_mult_others∨(x∈dom(inst_components)∧card(inst_components[{x}])=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="x ↦ x0∈dom(inst_components) ⩤ c_mult_others">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="dom((dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_mult∈({Inst} ⩤ components)[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="(dom(c_mult_others) ∖ dom(inst_components))∪dom(inst_components)=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∈({Inst} ⩤ components)[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="⊤∨(x∈dom(inst_components)∧card(inst_components[{x}])=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀x⦂Component,x0⦂ℤ,x1⦂ℤ·x ↦ x0∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}∧x ↦ x1∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}⇒x0=x1"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="x ↦ x0∈(dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="((components[{Pat}] ∖ dom(inst_components)) ∖ dom(inst_components))∪dom(inst_components)=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="x ↦ x1∈c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="x ↦ x0∈dom(inst_components) ⩤ c_mult_others∨x ↦ x0∈{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="((components[{Pat}] ∖ dom(inst_components)) ∖ dom(inst_components))∪dom(inst_components)⊆({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="x ↦ x1∈(dom(inst_components) ⩤ c_mult_others)∪{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}] ∖ dom(inst_components)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/comp_not_shared/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_mult/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p32" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p34,p8,p9,p10,p11,p12,p35,p13,p14,p15,p17,p36,p19,p20,p21,p33,p22,p23,p24,p25,p26,p27,p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37,p38,p39">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p37,p38,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Inst} × ran(new_c)))[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/comp_not_shared/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_mult/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p32" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p34,p8,p9,p10,p11,p12,p35,p13,p14,p15,p16,p36,p18,p19,p20,p33,p21,p22,p23,p24,p26,p27,p28"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37,p38,p39">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p37,p38,p39"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Inst} × ran(new_c)))[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/comp_not_shared/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p8,p5,p2,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Mdl} × ran(new_components)))∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/c_mult/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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r1" 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="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p14,p15,p32,p33,p18,p5,p6,p7,p19,p20,p8,p9,p31,p21,p23,p34,p24,p11,p25,p26,p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35,p36,p37">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p35,p36,p37"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_multiplicity∈(components∪({Mdl} × ran(new_components)))[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_clone_c⊆inst2pat_c">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]">
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/new_c_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of range of a function" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1,p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</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="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(1 ‥ c_multiplicity(c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRan"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/new_c_card/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="Component">
<org.eventb.core.lang name="L"/>
<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="p19">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" 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="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(ran(new_c))∧c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/new_c_card/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p22,p23,p24,p25,p26,p27,p28,p9,p0,p7,p29,p30,p31,p19,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p3,p44,p45,p46,p47,p17,p48,p49,p11,p50,p51,p52,p53,p54,p55,p56,p1,p57,p58,p59,p60,p61,p62,p63,p64,p65"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p0">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p56,p11,p9"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p51,p67"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p22,p23,p66,p72,p24,p73,p25,p26,p27,p68,p28,p0,p7,p29,p30,p31,p19,p71,p32,p33,p34,p35,p74,p36,p38,p39,p40,p41,p42,p43,p3,p44,p45,p46,p47,p17,p48,p49,p50,p52,p53,p54,p69,p55,p1,p57,p58,p59,p60,p61,p62,p70,p63,p64,p65"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p75" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="finite(ran(new_c))">
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c∈to_unfold_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="containers;containers⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of range of a function" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p1,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</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="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(1 ‥ c_multiplicity(c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="1 ‥ c_multiplicity(c) ⇸ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRan"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_card/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="Component">
<org.eventb.core.lang name="L"/>
<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="p19">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" 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="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(ran(new_c))∧c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/new_c_card/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r1" 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="p57"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p30,p1,p32,p33,p35,p7,p36,p38,p39,p10,p40,p59,p12,p13,p14,p60,p15,p16,p61,p17,p19,p46,p48,p49,p21,p50,p51,p52,p22,p23,p25,p53,p54,p27,p55,p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p30,p1,p32,p33,p35,p7,p36,p38,p39,p10,p40,p59,p12,p13,p14,p60,p15,p16,p61,p17,p19,p46,p48,p49,p21,p50,p51,p52,p22,p23,p25,p53,p54,p28,p27,p55,p56"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_multiplicity(c)=card(dom(new_c)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p22,p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p64,p22,p54">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p30,p1,p32,p33,p35,p7,p36,p38,p39,p10,p40,p59,p12,p13,p14,p60,p15,p16,p61,p17,p19,p46,p48,p49,p21,p50,p51,p52,p23,p25,p53,p27,p28,p55,p56"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_multiplicity(c)≥0)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p22,p54">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p22,p54">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p30,p1,p3,p5,p32,p33,p35,p7,p36,p38,p39,p64,p10,p40,p12,p13,p14,p15,p16,p17,p19,p46,p48,p49,p21,p50,p51,p52,p22,p23,p25,p53,p54,p27,p28,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p22,p54,p71">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p30,p1,p3,p5,p32,p33,p35,p7,p36,p38,p39,p64,p10,p40,p59,p12,p13,p14,p60,p15,p16,p61,p17,p19,p46,p48,p49,p21,p50,p51,p52,p23,p25,p53,p54,p27,p28,p55,p56"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p1,p2,p4,p3,p5,p71,p6,p7,p8,p64,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p56,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0:30000"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p71"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p64,p54,p22,p67">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity(c)=card(dom(new_c))" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p67">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p22,p54,p67"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (1 ‥ card(dom(new_c))=dom(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p64"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p64">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p64,p3,p72">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p64,p74">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with 1 ‥ card(dom(new_c))=dom(new_c)" org.eventb.core.prHyps="p74">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (card(ran(new_c))≤card(dom(new_c)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p64,p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p64,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀C·¬(container⊆C∧C;C⊆C))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p92"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬(container⊆[[0]]∧[[0]];[[0]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p92" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃C·container⊆C∧C;C⊆C)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94,p95">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94,p95"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p64,p77,p3">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀C·¬(container⊆C∧C;C⊆C))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p92"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬(container⊆[[0]]∧[[0]];[[0]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p92" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃C·container⊆C∧C;C⊆C)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94,p95">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94,p95"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p74"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p67"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="1 ‥ card(dom(new_c))=dom(new_c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="⊤∧⊤∧finite(dom(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_multiplicity(c)≥0"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="finite(ran(new_c))∧finite(dom(new_c))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="finite(dom(new_c))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="finite(1 ‥ c_multiplicity(c))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬(∀C⦂ℙ(Component×Component)·¬(container⊆C∧C;C⊆C))"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="container⊆C">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="card(ran(new_c))=card(dom(new_c))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="card(ran(new_c))≤card(dom(new_c))"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·¬¬(container⊆C∧C;C⊆C)"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="new_c∈1 ‥ card(dom(new_c)) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="{C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C ∣ C}≠(∅ ⦂ ℙ(ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="new_c∈dom(new_c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_multiplicity(c)=card(1 ‥ c_multiplicity(c))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_multiplicity(c)=card(dom(new_c))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ∧finite(dom(new_c))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="C;C⊆C">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="1 ‥ c_multiplicity(c)"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_unfold/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,k" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p11,p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p11,p3"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p17,p21,p19,p16"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈to_unfold_c∧k∈1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈to_unfold_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_clone/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p34">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p25,p9,p27,p6,p8,p11,p3,p16,p15,p21,p18,p7,p26,p12,p1,p19,p14,p13,p2,p4,p22,p10,p23,p20,p24,p28,p32,p34">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p38"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_clone_c∼[{c}])"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_clone_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(to_clone_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c∈ran(to_clone_c)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_clone_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈ran(to_clone_c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_unfold_in/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prRule name="r1" 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="p28"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p33">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p23,p8,p25,p5,p7,p11,p3,p15,p14,p19,p6,p24,p1,p17,p13,p12,p2,p20,p10,p21,p18,p22,p26,p27,p31,p33">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p18"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p23,p8,p25,p5,p7,p11,p3,p15,p14,p19,p6,p24,p1,p17,p13,p12,p2,p20,p10,p21,p18,p22,p26,p27,p31,p33">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c∈dom(to_unfold_c_in)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈dom(to_unfold_c_in)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_cont/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c,s,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p13,p14,p15,p16">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p19,p3,p22,p24,p16"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p27,p29,p13,p14,p20,p21"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p14"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m)" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p13,p14,p15,p16,p38">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p19,p3,p22,p24,p16"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p27,p29,p13,p14,p20,p21"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·(s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ)))∧(s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒s∈dom(todo))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="(∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ)))∧(∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒s∈dom(todo))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="s ↦ c∈containers">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒s∈dom(todo)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="s∈dom(todo)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒s∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="P"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cmult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="pc" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Mdl)" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p13">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p10,p1,p2,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(components[{Mdl}])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="pc∈dom(inst_components)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components[{pc}]⊆components[{Mdl}]">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="pc∈dom(inst_components)⇒finite(inst_components[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Mdl"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components[{Mdl}]"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46,p47,p48"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p47,p48"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p58,p7,p8,p9,p10,p11,p12,p13,p15,p17,p56,p18,p59,p21,p22,p60,p23,p24,p26,p30,p31,p32,p33,p34,p35,p36,p37,p39,p40,p41,p42,p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p61" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c_mult_others=∅∧(∀pc·¬pc∈dom(inst_components)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p62" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀pc·¬pc∈dom(inst_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p63" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬[[0]]∈dom(inst_components)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p38,p6,p20,p56,p66,p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p61" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p12,p38,p14,p15,p16,p42,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p16,p19,p14,p29,p28,p1,p2,p3,p4,p5,p7,p8,p9,p10,p11,p12,p13,p15,p17,p18,p21,p22,p23,p24,p26,p30,p31,p32,p33,p34,p35,p36,p37,p39,p40,p41,p42,p44,p65,p38,p6,p20,p43">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s)">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="dom(λc⦂Component·c∈components[{Pat}] ∣ ((components[{Pat}] ∖ dom(container))∩{c}) × (containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))))=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ ((components[{Pat}] ∖ dom(container))∩{c}) × (containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult))))∈({Inst} ⩤ components)[{Pat}] → (Component ↔ (({Inst} ⩤ components)[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·¬¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c)">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨¬(∀pc⦂Component·¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × (containers∼[{c}] → 0 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="components[{Pat}]=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ ((components[{Pat}] ∖ dom(container))∩{c}) × (containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))))∈({Inst} ⩤ components)[{Pat}] ⇸ (Component ↔ (({Inst} ⩤ components)[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c)">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒ran(c_mult)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ ((components[{Pat}] ∖ dom(container))∩{c}) × (containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))))∈({Inst} ⩤ components)[{Pat}] → (Component ↔ (({Inst} ⩤ components)[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬(c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s)">
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_fin/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀sc·¬(sc⊆ℕ × components[{Pat}]∧(∀c·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬([[0]]⊆ℕ × components[{Pat}]∧(∀c·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆[[1]])∧(∀i,c,s·i ↦ c∈[[3]]∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆[[3]]))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃sc·sc⊆ℕ × components[{Pat}]∧(∀c·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+(c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c) × {c}⊆sc)∧(∀i,c,s·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗(c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s) × {s}⊆sc))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15,p16,p17">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p15,p16,p17"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s) × {s}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="finite(inter({sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s) × {s}⊆sc) ∣ sc}))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬(∀sc⦂ℙ(ℤ×Component)·¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="{sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc) ∣ sc}≠(∅ ⦂ ℙ(ℙ(ℤ×Component)))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s) × {s}⊆sc)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c) × {c}⊆sc">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(inter({sc⦂ℙ(ℤ×Component)·sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc) ∣ sc}))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃sc⦂ℙ(ℤ×Component)·¬¬(sc⊆ℕ × components[{Pat}]∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒1 ‥ 1+c_mult(c) × {c}⊆sc)∧(∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈sc∧s ↦ c∈container⇒1 ‥ i∗c_mult(s) × {s}⊆sc))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="sc⊆ℕ × components[{Pat}]">
<org.eventb.core.prIdent name="sc" org.eventb.core.type="ℙ(ℤ×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_unfold/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<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="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p0">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧⊥∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_clone/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5,p6"/>
<org.eventb.core.prRule name="r1" 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.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈ran(∅ ⦂ ℙ(Component×Component))⇒todo'(c)=card((∅ ⦂ ℙ(Component×Component))∼[{c}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c)">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s)">
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈(∅ ⦂ ℙ(Component×Component))∧k∈1 ‥ max(ran(c_mult))⇒(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i){c ↦ k}∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,s,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p9,p10,p11,p12,p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p11,p12"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈P ◁ containers ▷ P∧m∈((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_mult))∧((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))⇒m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="s ↦ c∈P ◁ containers ▷ P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="m∈((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_mult))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈P ◁ containers ▷ P∧m∈((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_mult))∧((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))⇒m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m∈((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p2,p11,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p6,p58"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p59" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·¬¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨¬(∀pc⦂Component·¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬(c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components)))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒ran(c_mult)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="containers;containers⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<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="p33,p14,p36,p10,p12,p16,p5,p22,p21,p28,p26,p11,p35,p18,p1,p27,p20,p19,p3,p7,p29,p15,p31,p9,p25,p13,p17,p32,p37,p23,p6,p34,p30,p4,p2,p38,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="todo⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆todo"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(todo ∖ ({1+c_multiplicity(c)} × {c}))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ c_multiplicity(c)∗card(to_unfold_c_in[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈todo∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_unfold/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p13,p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1,p5,p4,p3,p2,p13,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="{c0 ↦ k}∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c ∖ {c}∧k∈1 ‥ M⇒{c0 ↦ k}∈todo"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}∧k∈1 ‥ M⇒{c0 ↦ k}∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_clone/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"/>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="({c} ⩤ todo)(c0)=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo(c0)=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="todo(c) − 1=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈ran(to_clone_c∪(ran(new_c) × {c}))⇒(todo{c ↦ todo(c) − 1})(c0)=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c0∈ran(to_clone_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(todo{c ↦ todo(c) − 1})(c0)=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈ran(to_clone_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈ran(to_clone_c∪(ran(new_c) × {c}))⇒(todo{c ↦ todo(c) − 1})(c0)=card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="todo(c) − 1=card((to_clone_c∪(ran(new_c) × {c}))∼[{c}])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_unfold_in/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="i,k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p9,p10">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p5"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,s,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p8,p9,p10,p11,p12"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="s ↦ c0∈containers">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}⇒m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="s∈P∧c0∈P∧s ↦ c0∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}⇒m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="s" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees s)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p20">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p52,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p53,p21,p22,p54,p23,p25,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p48,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p20"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="s∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒s∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="s∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × (containers∼[{c}] → 0 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}]⇒s∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="s∈dom(weight)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prRule name="r1" 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="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<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="p30,p12,p32,p7,p9,p14,p3,p20,p19,p25,p23,p8,p31,p16,p1,p24,p18,p17,p2,p4,p26,p13,p27,p6,p22,p10,p15,p28,p33,p29,p11,p34,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="todo⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆todo"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite(to_clone_c∼[{c}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="todo ∖ ({card(to_clone_c∼[{c}])} × {c})⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ c_multiplicity(c)∗card(to_unfold_c_in[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈todo∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prRule name="r1" 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="p35"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p36"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<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="p30,p12,p32,p7,p9,p14,p3,p20,p19,p25,p23,p8,p31,p16,p1,p24,p18,p17,p2,p4,p26,p13,p27,p6,p22,p10,p15,p28,p33,p29,p11,p34,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="todo⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆todo"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite(to_clone_c∼[{c}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(todo ∖ ({card(to_clone_c∼[{c}])} × {c}))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ c_multiplicity(c)∗card(to_unfold_c_in[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(to_clone_c)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈todo∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_unfold/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c0∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c0) × {c0}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c0) × {c0}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="1 ‥ 1+c_multiplicity(c0) × {c0}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_clone/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c0∈ran({c} ⩤ to_clone_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒todo(c0)=card(to_clone_c∼[{c0}] ∖ {c})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈ran({c} ⩤ to_clone_c)⇒todo(c0)=card(({c} ⩤ to_clone_c)∼[{c0}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="todo(c0)=card(to_clone_c∼[{c0}] ∖ {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈ran({c} ⩤ to_clone_c)⇒todo(c0)=card(to_clone_c∼[{c0}] ∖ {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_unfold_in/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒todo(c0)=card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))⇒todo(c0)=card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈dom(to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="todo(c0)=card((to_unfold_c_in∪(container∼[{to_clone_c(c)}] × {c}))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,i,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i,c0,s)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p9,p10"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="1 ‥ i∗c_multiplicity(s) × {s}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂ℤ,c0⦂Component,s⦂Component·i ↦ c0∈todo ∖ ({card(to_clone_c∼[{c}])} × {c})∧s ↦ c0∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="s ↦ c0∈container">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="i ↦ c0∈todo ∖ ({card(to_clone_c∼[{c}])} × {c})∧s ↦ c0∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo ∖ ({card(to_clone_c∼[{c}])} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="i ↦ c0∈todo ∖ ({card(to_clone_c∼[{c}])} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="clone_c/todo/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p4,p5,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<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="p32,p14,p36,p10,p12,p16,p5,p22,p21,p27,p25,p11,p34,p18,p1,p26,p20,p19,p3,p7,p28,p15,p30,p9,p24,p13,p17,p31,p37,p35,p6,p33,p29,p4,p2,p38,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="todo⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆todo"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(todo ∖ ({c_multiplicity(c)} × {c}))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ c_multiplicity(c)∗card(to_unfold_c_in[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈todo∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_unfold/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="k,c0" 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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p38,p39">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p42">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p6,p7,p8,p9,p10,p12,p13,p45,p14,p15,p16,p17,p18,p46,p20,p47,p21,p22,p23,p36,p24,p25,p26,p27,p29,p30,p48,p31,p49"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p36" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50,p51,p52">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p50,p51,p52"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p38,p14,p42,p15,p16,p17,p43,p18,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p55">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p42"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="{c ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c∧k∈1 ‥ M⇒{c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="{c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo(c)=c_multiplicity(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo(s)=c_multiplicity(s)∗todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c0∈to_unfold_c∧k∈1 ‥ M⇒{c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_clone/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="f,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r1" 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="p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p43">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c=c0)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=c0" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p47"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p34,p6,p2,p43"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (to_clone_c∼[{c0}]∩ran(new_c)=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p5,p6,p7,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p24,p25,p26,p57,p43,p27,p28,p41,p29,p30,p31,p32,p33,p34,p35,p37,p36"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58,p59,p60">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58,p59,p60"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=c0" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p1,p2,p61,p46,p3,p4,p5,p6,p48,p7,p9,p10,p11,p49,p12,p13,p14,p60,p15,p58,p16,p17,p18,p19,p20,p59,p21,p22,p47,p24,p25,p26,p43,p27,p28,p29,p30,p50,p31,p33,p34,p35,p37,p36">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p56">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with to_clone_c∼[{c0}]∩ran(new_c)=∅" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p56">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p56"/>
</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="0.0.1.0"/>
</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="0.0.1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p46"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c0) ↣ Component ∖ ran(components)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒1 ‥ 1+c_multiplicity(c) × {c}⊆todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c0∈ran(to_clone_c∪(ran(new_c) × {c}))⇒1 ‥ card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c)} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="to_clone_c∼[{c0}]∩ran(new_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="1 ‥ card(to_clone_c∼[{c0}])+card(ran(new_c)) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="1 ‥ card(to_clone_c∼[{c0}])+card(ran(new_c)) − card(∅ ⦂ ℙ(Component)) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c0∈ran(to_clone_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="1 ‥ card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c)} × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c0∈ran(to_clone_c∪(ran(new_c) × {c0}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="1 ‥ card((to_clone_c∼∪({c0} × ran(new_c)))[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀i⦂ℤ,c⦂Component,s⦂Component·i ↦ c∈todo∧s ↦ c∈container⇒1 ‥ i∗c_multiplicity(s) × {s}⊆todo"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="1 ‥ card((to_clone_c∼∪(ran(new_c) × {c0})∼)[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="1 ‥ card(to_clone_c∼[{c0}])+card(ran(new_c)) − card(to_clone_c∼[{c0}]∩ran(new_c)) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c0∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="c=c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="todo⊆ℕ × components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈ran(to_clone_c)⇒1 ‥ card(to_clone_c∼[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="¬c=c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈ran(to_clone_c∪(ran(new_c) × {c}))⇒1 ‥ card((to_clone_c∪(ran(new_c) × {c}))∼[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c)} × {c})"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c0 ↦ dest∈to_unfold_c_in">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒1 ‥ card(to_unfold_c_in[{c}]) × {c}⊆todo"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="1 ‥ card(to_clone_c∼[{c0}]∪({c0} × ran(new_c))[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="1 ‥ card((to_clone_c∪(ran(new_c) × {c0}))∼[{c0}]) × {c0}⊆todo ∖ ({c_multiplicity(c0)} × {c0})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_unfold_in/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,k0,i,k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prRule name="r1" 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="p60"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p63,p64">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p59,p10,p11,p12,p13,p14,p15,p16,p17,p18,p66,p19,p20,p22,p23,p24,p25,p28,p58,p67,p68,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p42,p45,p48,p50,p51,p52,p53,p54,p55,p56,p57"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p46" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p63,p46"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p75,p77,p66,p37"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p40,p44,p41,p80,p21,p63,p43,p26,p37"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p44,p41,p43,p26"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p81" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p82,p81,p84"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=c" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p89">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p1,p2,p69,p3,p4,p5,p6,p90,p7,p8,p9,p59,p83,p63,p71,p10,p11,p86,p12,p85,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p27,p28,p58,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p42,p87,p45,p48,p50,p51,p52,p53,p54,p73,p55,p56,p89,p57,p70">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p92">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p44,p41,p82,p84,p43,p26,p81"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p43,p26"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p97"/>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p93"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p89"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees k0)" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
<org.eventb.core.prIdent name="k0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬k0∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k0}=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="k0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="c0 ↦ c∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀k0⦂ℤ·¬k0∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k0}=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀k0⦂ℤ·¬(k0∈1 ‥ max(ran(c_multiplicity))∧c_indexes(dest){c ↦ k0}=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c){c0 ↦ k}∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬(∃k0⦂ℤ·k0∈1 ‥ max(ran(c_multiplicity))∧c_indexes(dest){c ↦ k0}=(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i){c ↦ k}∈todo"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,s,k,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prRule name="r1" 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="p60"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,s,m)" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p63,p64,p65,p66,p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p57,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p69,p45,p47,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="DESELECT7" org.eventb.core.prHyps="p44,p41,p69,p65,p66,p26,p43"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p63,p64,p75,p71,p37,p74"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p79,p72,p82,p5,p67,p25,p80,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees k)" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p91">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(¬k∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k}=m)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93,p94"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p93,p94"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬k∈1 ‥ max(ran(c_multiplicity))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p95"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬c_indexes(dest){c ↦ k}=m" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p94" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p96"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ k}=m" org.eventb.core.prHyps="p96">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p97"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p72,p73"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p44,p64,p69,p71,p65,p37,p74,p41,p75,p72,p66,p63,p43,p26,p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p43,p26"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ k}=m" org.eventb.core.prHyps="p96">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p65,p66"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in (containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪id)[{c0}] ◁ (c_indexes(dest){c ↦ k})∈todo ∖ {k·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104,p105"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p104,p105"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∃k0·k0∈1 ‥ M∧c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪id)[{c0}] ◁ (c_indexes(dest){c ↦ k}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p107"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬([[0]]∈1 ‥ M∧c_indexes(dest){c ↦ [[0]]}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪id)[{c0}] ◁ (c_indexes(dest){c ↦ k}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p108"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p108"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst k)" org.eventb.core.prHyps="p109">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p111">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p109"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p111" org.eventb.core.prHyps="p95" org.eventb.core.prInfHyps="p112"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct hyp (¬c_indexes(dest){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪id)[{c0}] ◁ (c_indexes(dest){c ↦ k}))" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p113">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p114">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p113"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p114"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p116">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p1,p2,p70,p3,p4,p5,p104,p6,p7,p80,p75,p97,p8,p9,p58,p76,p95,p10,p11,p84,p12,p83,p13,p14,p15,p16,p17,p18,p99,p79,p20,p21,p22,p23,p24,p25,p27,p28,p57,p29,p30,p32,p33,p34,p100,p35,p36,p37,p38,p39,p40,p41,p42,p98,p73,p64,p71,p102,p82,p101,p45,p47,p74,p49,p50,p72,p51,p52,p53,p67,p81,p63,p54,p55,p96,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p117">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p31"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_indexes(dest)=inst2pat_c∼;((containers∪id)[{dest}] ◁ c_index)" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p117">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p124">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p118"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p120"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p97,p96,p102,p104,p98,p73"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p44,p31,p65,p102,p104,p109,p97,p66,p43,p26,p96,p108,p73,p98"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with (inst2pat_c∼;((containers∪id)[{dest}] ◁ c_index)){c ↦ k}=m" org.eventb.core.prHyps="p118">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p126"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p127"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p128"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p96,p66,p73"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p129">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p1,p2,p70,p3,p4,p5,p120,p104,p109,p6,p121,p7,p128,p80,p126,p75,p97,p8,p122,p9,p58,p76,p95,p10,p11,p84,p12,p83,p117,p123,p127,p13,p14,p15,p16,p17,p119,p18,p129,p99,p79,p20,p21,p22,p23,p24,p25,p26,p27,p28,p57,p29,p30,p31,p32,p33,p34,p100,p35,p36,p37,p38,p39,p40,p41,p42,p43,p108,p118,p98,p64,p44,p71,p65,p102,p82,p101,p45,p47,p74,p49,p50,p72,p51,p52,p53,p67,p81,p63,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p130">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p131">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p131">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p145">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p134"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p135"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p121" org.eventb.core.prInfHyps="p136"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p123" org.eventb.core.prInfHyps="p137"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p138"/>
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p139"/>
<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p108" org.eventb.core.prInfHyps="p140"/>
<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p127" org.eventb.core.prInfHyps="p143"/>
<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p130" org.eventb.core.prInfHyps="p144"/>
<org.eventb.core.prHypAction name="DESELECT13" org.eventb.core.prHyps="p64,p123,p127,p120,p104,p109,p121,p80,p126,p130,p67,p108,p98"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p131"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p129"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p147">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p147" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="∀k0⦂ℤ·¬k0∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="c_indexes(dest){c ↦ k}=(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬(∃k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity))∧c_indexes(dest){c ↦ k}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="c_indexes(dest)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="c0∈ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ (c_indexes(dest){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬c0∈ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀k0⦂ℤ·¬k0∈1 ‥ M∨¬c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬m∈{k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})∈{k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬⊥"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="dest∈dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀k0⦂ℤ·¬k0∈1 ‥ M∨¬c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬c_indexes(dest){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="m∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="c_indexes(dest){c ↦ k}∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ (c_indexes(dest){c ↦ k})∈todo">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="c_indexes(dest){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="m∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}}">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬(∃k0⦂ℤ·k0∈1 ‥ M∧c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="c_indexes(dest){c ↦ k}=m">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧m∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}⇒m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}"/>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀k⦂ℤ·¬(k∈1 ‥ max(ran(c_multiplicity))∧c_indexes(dest){c ↦ k}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="c0∈components[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="c_indexes(dest){c ↦ k}∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="¬k∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀k⦂ℤ·¬k∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k}=m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="¬⊤∨¬c_indexes(dest){c ↦ k}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="¬c∈ran(new_c)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬¬k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="s ↦ c∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="¬¬c_indexes(dest){c ↦ k}=m">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧m∈((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}⇒m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="c∈components[{Pat}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀k0⦂ℤ·¬k0∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ (c_indexes(dest){c ↦ k})">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬(¬k∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k}=m)">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬k∈1 ‥ max(ran(c_multiplicity))∨¬c_indexes(dest){c ↦ k}=m">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}=m">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k})⊆(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="c∈P"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="m∈todo">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧m∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}⇒m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="∀k0⦂ℤ·¬(k0∈1 ‥ M∧c_indexes(dest){c ↦ k0}=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}] ◁ (c_indexes(dest){c ↦ k}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="k">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dest"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,k" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r1" 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="p58"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p62">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p60,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p28,p57,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p65,p45,p47,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p62,p44,p41,p65,p43,p26"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p72,p37,p68"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p60,p70,p67,p10,p11,p75,p12,p74,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p27,p28,p57,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p40,p42,p76,p45,p47,p49,p50,p51,p52,p53,p73,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="k∈1 ‥ M⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀k⦂ℤ·k∈1 ‥ M⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_ty/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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r1" 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="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p32,p4,p5,p33,p6,p7,p8,p34,p11,p12,p14,p15,p18,p19,p20,p31,p21,p23,p24,p25,p35,p26"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36,p37,p38">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p36,p37,p38"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="todo∈(components∪({Mdl} × ran(new_components)))[{Pat}] → (Component ↔ ((components∪({Mdl} × ran(new_components)))[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒card(inst2pat_c∼[{c}])≤todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_multiplicity)⇒todo(c)=c_multiplicity(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo(s)=c_multiplicity(s)∗todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,s,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p53"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p55" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p56" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p59,p60,p61,p62,p63">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p63" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p69,p4,p5,p6,p7,p65,p9,p10,p70,p11,p13,p14,p15,p16,p17,p18,p71,p19,p20,p21,p22,p23,p25,p52,p72,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p42,p44,p45,p46,p47,p48,p50,p51"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p38,p66,p70,p69,p74,p72"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p78,p71,p33,p77"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪id)[{s}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p76" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p85" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p87"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p59,p88,p62"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in m∈containers[{s}]∪(new_components∼;containers;inst_components;containers)[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s} → 1 ‥ max(ran(c_multiplicity))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p86" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92,p93"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p92,p93"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (s∈dom(new_components∼))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p95">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p60,p4,p5,p6,p7,p65,p8,p9,p10,p11,p83,p12,p13,p14,p15,p16,p93,p17,p18,p89,p20,p21,p22,p23,p24,p25,p52,p26,p27,p92,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p96,p39,p41,p42,p44,p45,p46,p47,p48,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p97">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((new_components∼;containers;inst_components;containers)[{s}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p60,p4,p5,p6,p7,p65,p8,p9,p10,p11,p83,p12,p13,p14,p15,p16,p93,p98,p17,p18,p89,p20,p21,p22,p23,p24,p25,p52,p26,p27,p92,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p39,p41,p42,p44,p45,p46,p47,p48,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p99">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (new_components∼;containers;inst_components;containers)[{s}]=∅" org.eventb.core.prHyps="p99">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p92,p93"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((new_components∼;containers;(new_components∪inst_components))[{s}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p103">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p100,p60,p4,p5,p6,p7,p65,p8,p9,p10,p11,p83,p12,p13,p14,p15,p16,p98,p17,p18,p89,p20,p21,p22,p23,p24,p25,p52,p26,p27,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p105,p39,p41,p42,p44,p45,p46,p47,p48,p104,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p103">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (new_components∼;containers;(new_components∪inst_components))[{s}]=∅" org.eventb.core.prHyps="p103">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p101,p102"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p108" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p110"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c∈dom(new_components∼))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p111">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p111" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p112"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p100,p110,p60,p4,p5,p6,p7,p65,p8,p9,p10,p11,p83,p12,p13,p14,p15,p16,p98,p17,p18,p89,p20,p21,p22,p23,p24,p25,p52,p26,p27,p112,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p39,p41,p42,p109,p44,p45,p46,p47,p48,p106,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p113">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p113" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪id)[{c}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p115"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p115"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p115" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((new_components∼;containers;inst_components;containers)[{c}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p117">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p100,p110,p60,p4,p5,p6,p7,p65,p8,p114,p9,p10,p11,p83,p12,p13,p14,p15,p16,p98,p17,p18,p89,p20,p21,p22,p23,p24,p25,p52,p26,p27,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p39,p41,p42,p109,p44,p45,p46,p47,p48,p106,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p117">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (new_components∼;containers;inst_components;containers)[{c}]=∅" org.eventb.core.prHyps="p117">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p116"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p117" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p118"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p119" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p120"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((new_components∼;containers;(new_components∪inst_components))[{c}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p61,p1,p2,p73,p3,p100,p110,p60,p4,p5,p6,p7,p65,p8,p114,p9,p10,p11,p83,p12,p13,p14,p15,p16,p98,p17,p18,p89,p20,p21,p22,p23,p24,p25,p118,p52,p26,p27,p90,p28,p29,p30,p31,p32,p34,p35,p36,p37,p39,p41,p42,p109,p44,p45,p46,p47,p48,p106,p81,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p121">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (new_components∼;containers;(new_components∪inst_components))[{c}]=∅" org.eventb.core.prHyps="p121">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p120" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p120"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p123" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p124"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p61" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p125"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p126"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p127"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p126"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p89,p1,p90,p127,p110,p60,p41,p125,p109">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p121"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p117"/>
</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="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p111"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p103"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p99"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬s∈dom(new_components∼;containers;inst_components;containers)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="dom(m)=containers[{s}]∪{s}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="(containers[{c}]∪(new_components∼;containers;inst_components;containers)[{c}]∪(new_components∼;containers;(new_components∪inst_components))[{c}]∪(id ⦂ ℙ(Component×Component))[{c}]) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="dom(m)=containers[{s}]∪(∅ ⦂ ℙ(Component))∪(∅ ⦂ ℙ(Component))∪{s}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="m∈containers[{s}]∪(∅ ⦂ ℙ(Component))∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s} ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒m∈todo(s)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="(containers[{c}]∪(∅ ⦂ ℙ(Component))∪{c}) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="m∈(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="(new_components∼;containers;inst_components;containers)[{s}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬c∈dom(new_components∼;containers;inst_components;containers)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="m∈containers[{s}]∪(new_components∼;containers;inst_components;containers)[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s} ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒m∈todo(s)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="m∈containers[{s}]∪(new_components∼;containers;inst_components;containers)[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪(id ⦂ ℙ(Component×Component))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="(containers[{c}]∪{c}) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="¬c∈dom(new_components∼;containers;(new_components∪inst_components))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="m∈containers[{s}]∪(∅ ⦂ ℙ(Component))∪(∅ ⦂ ℙ(Component))∪{s} ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="¬c∈dom(new_components∼)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="¬s∈dom(new_components∼)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="dom(m)=containers[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒m∈todo(s)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="(containers[{c}]∪(new_components∼;containers;inst_components;containers)[{c}]∪(new_components∼;containers;(new_components∪inst_components))[{c}]∪{c}) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="m∈containers[{s}]∪{s} ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="m∈containers[{s}]∪(new_components∼;containers;inst_components;containers)[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s} → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="¬s∈dom(new_components∼;containers;(new_components∪inst_components))">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="m∈containers[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s} ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒m∈todo(s)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="(new_components∼;containers;(new_components∪inst_components))[{s}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∧m∈((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="(new_components∼;containers;(new_components∪inst_components))[{c}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="m∈(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="(containers[{c}]∪(new_components∼;containers;(new_components∪inst_components))[{c}]∪{c}) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬c∈ran(new_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="(new_components∼;containers;inst_components;containers)[{c}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="dom(m)=containers[{s}]∪(new_components∼;containers;inst_components;containers)[{s}]∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="¬s∈ran(new_components)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="c∈ran(new_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)⇒m∈todo(s)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="m∈((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∧m∈((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="s∈dom(new_components∼)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="s∈ran(new_components)">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="(containers[{c}]∪(∅ ⦂ ℙ(Component))∪(new_components∼;containers;(new_components∪inst_components))[{c}]∪{c}) ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="dom(m)=containers[{s}]∪(∅ ⦂ ℙ(Component))∪(new_components∼;containers;(new_components∪inst_components))[{s}]∪{s}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="m∈todo">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="c∈dom(new_components∼)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo/FIS" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∃todo'⦂ℙ(Component×ℤ)·todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∃todo'⦂ℙ(Component×ℤ)·todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_root/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p29"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p30"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p34">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p1,p2,p34,p3,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p18,p19,p20,p21,p22,p23,p32,p24,p25,p26,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p37">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p19"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p38">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p32" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39,p40,p41">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p39,p40,p41"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p42">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈components[{Pat}] ∖ dom(container)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℤ∧c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c∈components[{Pat}] ∖ dom(container)⇒c∈dom(todo)∧todo∈Component ⇸ ℤ∧c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_root/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7,p8"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p7,p8"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}] ∖ (dom(container) ∖ components[{Inst}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="todo'(c)=(dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}] ∖ (dom(container) ∖ components[{Inst}])⇒todo'(c)=c_mult(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="todo'(c)=(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}] ∖ dom(components[{Inst}] ⩤ container)⇒todo'(c)=c_mult(c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬c∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo'(c)=c_mult(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}] ∖ (dom(container) ∖ components[{Inst}])⇒todo'(c)=c_mult(c)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="todo'(c)=card(inst_components[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈dom(inst_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬c∈dom(inst_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="todo'(c)={pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="todo'(c)=c_mult_others(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_root/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p17,p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20">
<org.eventb.core.prRule name="r0" 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="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p5,p4,p3,p1,p9,p17,p18,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c0∈dom(container)∧¬c0∈to_unfold_c ∖ {c}⇒(todo{c ↦ 0})(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∉dom(container)∧c0∉to_unfold_c ∖ {c}⇒(todo{c ↦ 0})(c0)=0"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c0∈dom(container)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="({c} ⩤ todo)(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="todo(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="0=0"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(todo{c ↦ 0})(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c0⦂Component·¬c0∈dom(container)∧¬c0∈to_unfold_c ∖ {c}⇒(todo{c ↦ 0})(c0)=0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_root/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p4,p1,p5,p2,p3,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ dom(container∪(ran(new_c) × {dest}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ dom(container∪(ran(new_c) × {dest}))⇒todo(c0)=c_multiplicity(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ dom(container∪(ran(new_c) × {dest}))⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="todo(c0)=c_multiplicity(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_root/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p16,p17">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p4,p5,p3,p1,p8,p16,p17">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∧¬c∈to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c∈dom(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∧¬c∈to_unfold_c⇒todo(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·¬c∈dom(container)∧¬c∈to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c∈to_unfold_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·c∉dom(container)∧c∉to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c∈dom(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∉dom(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∧c∉to_unfold_c⇒todo(c)=0"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="dom(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_i2p/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13,p14,p15">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p13,p14,p15"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite(inst2pat_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈components[{Pat}]⇒finite(inst2pat_c∼[{c}])∧c∈dom(todo)∧todo∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒finite(inst2pat_c∼[{c}])∧c∈dom(todo)∧todo∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite(inst2pat_c∼[{c}])∧c∈dom(todo)∧todo∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_i2p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6,p7"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p6,p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo'" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(s)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="0≤todo'(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]⇒0≤todo'(c)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]⇒card((∅ ⦂ ℙ(Component×Component))∼[{c}])≤todo'(c)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]⇒0≤todo'(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="todo'∈components[{Pat}] → ℕ∧(∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo'(c)=c_mult(c))∧(∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo'(s)=todo'(c)∗c_mult(s)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_i2p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_i2p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒card((inst2pat_c∪(ran(new_c) × {c}))∼[{c0}])≤todo(c0)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_i2p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c,f" 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" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p31"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p37">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p6,p7,p8,p9,p10,p11,p13,p14,p15,p17,p18,p21,p22,p23,p24,p35,p25,p27,p28,p29,p30,p31"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39,p40,p41">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p39,p40,p41"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p43">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p1,p2,p3,p6,p7,p8,p9,p37,p10,p41,p11,p39,p12,p13,p14,p15,p40,p16,p17,p18,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p38">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p38"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒card(inst2pat_c∼[{c}])≤todo(c)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒card(inst2pat_c∼[{c}])≤todo(c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒card(inst2pat_c∼[{c}])≤todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_multiplicity)⇒todo(c)=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="card(inst2pat_c∼[{c}])≤todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo(s)=c_multiplicity(s)∗todo(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_unfold/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒todo(c)≥c_multiplicity(c)∗card(to_unfold_c_in[{c}])+card(inst2pat_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒todo(c)≥c_multiplicity(c)∗card(to_unfold_c_in[{c}])+card(inst2pat_c∼[{c}])"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="todo(c)≥c_multiplicity(c)∗card(to_unfold_c_in[{c}])+card(inst2pat_c∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_i2p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(∅ ⦂ ℙ(Component×Component))⊆dom(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_i2p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p5,p4,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⊆dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_i2p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p5,p4,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⊆dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_mul/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prRule name="r1" 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="p27"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p28"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p30">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p10,p12,p7,p3,p21,p17,p5,p18,p14,p2,p19,p9,p6,p20,p4,p13,p16,p11,p23,p1,p8,p24,p22,p15,p30">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c∈dom(to_unfold_c_in)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈dom(to_unfold_c_in)⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_mul/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈dom(∅ ⦂ ℙ(Component×Component))⇒c_mult(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_mul/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p43">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p45,p9,p10,p12,p13,p14,p15,p16,p17,p46,p18,p47,p19,p20,p48,p21,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p43,p19,p20,p21,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c0∈dom(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⇒c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × (containers∼[{c}] → 0 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⇒c_multiplicity(c0)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c0∈dom(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_mul/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (dom((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈dom(to_unfold_c_in ∖ {c ↦ dest})∪dom((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p9,p10,p12,p14,p15,p50,p16,p18,p19,p21,p22,p51,p24,p52,p25,p26,p53,p30,p44,p31,p32,p33,p35,p37,p38,p54,p39"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55,p56,p57">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p55,p56,p57"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p58,p20,p59,p7,p8,p60,p13,p27,p28,p29,p34,p17,p61"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p1,p2,p3,p4,p49,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈dom(to_unfold_c_in ∖ {c ↦ dest})∨c0∈dom((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c0∈dom((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⇒c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c0∈dom(to_unfold_c_in ∖ {c ↦ dest})∪dom((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)≥c_multiplicity(c)∗card(to_unfold_c_in[{c}])+card(inst2pat_c∼[{c}])">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="c0∈dom((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × (containers∼[{c}] → 0 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="f;f⊆f">
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ dom(container)⇒todo(c)=c_multiplicity(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈dom((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))⇒c_multiplicity(c0)&gt;0"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="todo∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component,s⦂Component·s ↦ c∈container⇒todo(s)=c_multiplicity(s)∗todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p33"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((∅ ⦂ ℙ(Component×Component));(∅ ⦂ ℙ(Component×Component)))∩(components[{Inst}] ⩤ container)=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p40"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p42,p9,p10,p11,p12,p13,p14,p15,p16,p17,p43,p18,p44,p19,p20,p45,p21,p23,p25,p26,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}));(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))))∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × (containers∼[{c}] → 0 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p41,p15,p16,p17,p42,p18,p19,p43,p20,p21,p23,p24,p25,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}));((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))))∩(container∪(ran(new_c) × {dest}))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prRule name="r1" 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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p39,p13,p14,p16,p17,p18,p19,p22,p23,p24,p26,p27,p28,p29,p31,p32,p33,p34,p35"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩(container∪(new_components∼;container;(inst_components∪new_components)))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="containers∈Component ↔ Component"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="height_leaf/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" 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="p13"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p6,p1,p9,p10,p11,p7,p5,p2,p8,p3,p12,p16">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈components[{Pat}] ∖ ran(container)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c∈components[{Pat}] ∖ ran(container)⇒c∈dom(height)∧height∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈dom(height)∧height∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="height∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈dom(height)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ ran(container)⇒c∈dom(height)∧height∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="height∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="height_node/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" 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="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p3,p4,p7,p10,p12,p2,p6,p8,p9,p18,p11,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p22"/>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p23"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ ran(container)⇒height(c)=0"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈height[container∼[{c}]]⇒b≥x">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]∩ran(container)⇒c∈dom(height)∧height∈Component ⇸ ℤ∧height[container∼[{c}]]≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈height[container∼[{c}]]⇒b≥x)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="height∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c∈dom(height)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈components[{Pat}]∩ran(container)⇒c∈dom(height)∧height∈Component ⇸ ℤ∧¬dom(height)∩container∼[{c}]=(∅ ⦂ ℙ(Component))∧(∃b⦂ℤ·∀x⦂ℤ·x∈height[container∼[{c}]]⇒b≥x)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]∩ran(container)⇒c∈dom(height)∧height∈Component ⇸ ℤ∧¬dom(height)∩container∼[{c}]=(∅ ⦂ ℙ(Component))∧(∃b⦂ℤ·∀x⦂ℤ·x∈height[container∼[{c}]]⇒b≥x)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈components[{Pat}]∩ran(container)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈dom(height)∧height∈Component ⇸ ℤ∧¬dom(height)∩container∼[{c}]=(∅ ⦂ ℙ(Component))∧(∃b⦂ℤ·∀x⦂ℤ·x∈height[container∼[{c}]]⇒b≥x)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬dom(height)∩container∼[{c}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="height∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/height/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prRule name="r1" 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="p36"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p37"/>
<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="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35">
<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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]∩ran(container)⇒height(c)=1+max(height[container∼[{c}]])"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="height∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}] ∖ ran(container)⇒height(c)=0"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="height∈({Inst} ⩤ components)[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" 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="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/height_leaf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}] ∖ ran(components[{Inst}] ⩤ container)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}] ∖ ran(components[{Inst}] ⩤ container)⇒height(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}] ∖ ran(components[{Inst}] ⩤ container)⇒height(c)=0"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/height_node/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p8"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]∩ran(components[{Inst}] ⩤ container)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]∩ran(components[{Inst}] ⩤ container)⇒height(c)=1+max(height[(components[{Inst}] ⩤ container)∼[{c}]])"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]∩ran(components[{Inst}] ⩤ container)⇒height(c)=1+max(height[container∼[{c}] ∖ components[{Inst}]])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]∩ran(components[{Inst}] ⩤ container)⇒height(c)=1+max(height[container∼[{c}] ∖ components[{Inst}]])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="height(c)=1+max(height[container∼[{c}] ∖ components[{Inst}]])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/height/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/height_leaf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container)⇒height(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container)⇒height(c)=0"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/height_node/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container)⇒height(c)=1+max(height[container∼[{c}]])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c0)=1+max(height[container∼[{c0}]])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container)⇒height(c0)=1+max(height[container∼[{c0}]])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/NAT" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="card(⋃c⦂Component·c∈components[{Pat}] ∣ todo(c) × {c})∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/height/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/height_leaf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container∪(ran(new_c) × {dest}))⇒height(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c0)=0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container∪(ran(new_c) × {dest}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}] ∖ ran(container∪(ran(new_c) × {dest}))⇒height(c)=0"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/height_node/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c0)=1+max(height[(container∪(ran(new_c) × {dest}))∼[{c0}]])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container∪(ran(new_c) × {dest}))⇒height(c)=1+max(height[(container∪(ran(new_c) × {dest}))∼[{c}]])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container∪(ran(new_c) × {dest}))⇒height(c0)=1+max(height[(container∪(ran(new_c) × {dest}))∼[{c0}]])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]∩ran(container∪(ran(new_c) × {dest}))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/NAT" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="card(⋃c⦂Component·c∈components[{Pat}] ∣ todo(c) × {c})∈ℕ"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/height/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prRule name="r1" 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="p2"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p4"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/height_leaf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}] ∖ ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))⇒height(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}] ∖ ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))⇒height(c)=0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c)=0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}] ∖ ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/height_node/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="height" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="height(c)=1+max(height[(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[{c}]])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]∩ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))⇒height(c)=1+max(height[(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[{c}]])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}]∩ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))⇒height(c)=1+max(height[(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[{c}]])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]∩ran(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prRule name="r1" 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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p37,p10,p40,p5,p8,p13,p3,p11,p41,p38,p24,p15,p22,p19,p32,p4,p33,p20,p23,p9,p29,p6,p39,p1,p26,p17,p16,p7,p21,p31,p2,p34,p30,p12,p36,p18,p14,p28,p27,p35,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((components[{Inst}] ⩤ container)∼[{c}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="finite(container∼[{c}] ∖ components[{Inst}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}] ∖ components[{Inst}])"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·container∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_fin/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite((container∪(ran(new_c) × {dest}))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((container∪(ran(new_c) × {dest}))∼[{c}])"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_fin/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" 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="p4"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst c)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p11">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(((inst_components∪new_components)∼;container;(inst_components∪new_components))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="finite((container∼∪((inst_components∪new_components)∼;container;(inst_components∪new_components))∼)[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="finite(container∼[{c}])∧finite(((inst_components∪new_components)∼;container;(inst_components∪new_components))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="containers∈Component ↔ Component">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite(container∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[{c}])"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="finite((container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="finite(container∼[{c}]∪((inst_components∪new_components)∼;container;(inst_components∪new_components))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1,p3,p2,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1,p3,p2,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((components[{Inst}] ⩤ containers)∼[{c}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite(containers∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="finite((components[{Inst}] ⩤ containers)∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(components[{Inst}] ⩤ containers)∼[{c}]⊆containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prRule name="r1" 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="p38"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p39"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p5,p6,p7,p8,p9,p10,p11,p40,p13,p14,p15,p41,p17,p18,p42,p19,p20,p22,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ container⊆components[{Inst}] ⩤ containers"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_trans/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r1" 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="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p7,p8,p9,p10,p11,p12,p13,p43,p15,p16,p17,p44,p19,p20,p45,p21,p22,p24,p27,p28,p29,p31,p32,p33,p34,p36,p37,p38,p39,p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p46,p47,p5,p35,p6,p48,p49"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ containers;(components[{Inst}] ⩤ containers)⊆components[{Inst}] ⩤ containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_irrefl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3,p2,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_fin/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r0" 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="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst c0)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p25">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=dest)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p28">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=dest" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p30">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (({dest} × ran(new_c))[{c0}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p1,p30,p2,p5,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p31">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ({dest} × ran(new_c))[{c0}]=∅" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p31"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p28"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p34">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p3">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p35">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p1,p2,p5,p3,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(containers[{dest}] × ran(new_c))[{c0}]⊆ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="({dest} × ran(new_c))[{c0}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="finite((containers∼∪(ran(new_c) × {dest})∼∪(ran(new_c) × containers[{dest}])∼)[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(({dest} × ran(new_c))[{dest}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬c0=dest">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite((containers[{dest}] × ran(new_c))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="finite(containers∼[{c0}])∧finite(({dest} × ran(new_c))[{c0}])∧finite((containers[{dest}] × ran(new_c))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c0=dest">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="finite((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="finite(containers∼[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="finite(containers∼[{c0}]∪({dest} × ran(new_c))[{c0}]∪(containers[{dest}] × ran(new_c))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬c0∈dom({dest} × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="finite((containers∼∪({dest} × ran(new_c))∪(containers[{dest}] × ran(new_c)))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c}])"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(({dest} × ran(new_c))[{c0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="ran(new_c)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" 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="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p4,p5,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∪(ran(new_c) × {dest})⊆containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container⊆containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_trans/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p3,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p5"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))⊆containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_irrefl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p41,p15,p16,p17,p42,p19,p43,p20,p21,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_fin/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p4,p5,p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(containers∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="finite((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite((new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="finite(containers∼[{c}])∧finite((new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite((containers∼∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∼)[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈Component ↔ Component"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∼[{c}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(containers∼[{c}]∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p4,p8,p9,p6,p2,p1,p7,p5,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p4,p8,p9,p6,p2,p1,p7,p5,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="new_components∼;container;(inst_components∪new_components)⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="container∪(new_components∼;container;(inst_components∪new_components))⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="container⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∧new_components∼;container;(inst_components∪new_components)⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_trans/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="x,x0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38"/>
<org.eventb.core.prRule name="r1" 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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p42,p13,p15,p17,p18,p19,p20,p23,p24,p25,p26,p28,p30,p32,p34,p35,p36,p37,p38"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈(containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components)));(containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x1·x ↦ x1∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))∧x1 ↦ x0∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49,p50">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p49,p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x1 ↦ x0∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p53,p14,p54"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p45,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="x ↦ x0∈(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))⇒x ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="x ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="x ↦ x1∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀x⦂Component,x0⦂Component·x ↦ x0∈(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))⇒x ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="x1 ↦ x0∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="x ↦ x0∈(containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components)));(containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components)))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))⊆containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="x ↦ x1∈containers∨x ↦ x1∈(inst_components∪new_components)∼;containers;(inst_components∪new_components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="x1 ↦ x0∈containers∨x1 ↦ x0∈(inst_components∪new_components)∼;containers;(inst_components∪new_components)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="x ↦ x0∈(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="containers∈Component ↔ Component"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∃x1⦂Component·x ↦ x1∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))∧x1 ↦ x0∈containers∪((inst_components∪new_components)∼;containers;(inst_components∪new_components))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_irrefl/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p8,p9,p6,p2,p1,p7,p5,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_mono/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="s,c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees s,c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p8,p9,p6,p2,p15,p11,p4,p12,p10,p1,p13,p7,p5,p14,p3,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="s ↦ c∈container">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r1" 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="p57"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p69">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p41,p10,p11,p47,p69,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p66,p6,p8,p63,p9,p60,p12,p13,p62,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p61,p32,p33,p64,p34,p35,p36,p37,p73,p38,p40,p43,p45,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p35,p66"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p64,p63,p76"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p1,p2,p74,p3,p4,p5,p6,p79,p8,p9,p60,p10,p11,p12,p69,p13,p62,p81,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p61,p32,p33,p34,p36,p37,p80,p38,p41,p43,p45,p47,p48,p49,p50,p51,p52,p53,p75,p54,p55,p78">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="x ↦ x0∈components[{Inst}] ⩤ containers">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀x⦂Component,x0⦂Component·x ↦ x0∈components[{Inst}] ⩤ containers⇒x ↦ x0∈ran({Inst} ⩤ components) × ran({Inst} ⩤ components)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ containers∈ran({Inst} ⩤ components) ↔ ran({Inst} ⩤ components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="x∈ran({Inst} ⩤ components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="x∈ran({Inst} ⩤ components)∧x0∈ran({Inst} ⩤ components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀x⦂Component,x0⦂Component·x ↦ x0∈components[{Inst}] ⩤ containers⇒x∈ran({Inst} ⩤ components)∧x0∈ran({Inst} ⩤ components)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="x ↦ x0∈components[{Inst}] ⩤ containers⇒x∈ran({Inst} ⩤ components)∧x0∈ran({Inst} ⩤ components)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="components[{Inst}] ⩤ containers⊆ran({Inst} ⩤ components) × ran({Inst} ⩤ components)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="x0∈ran({Inst} ⩤ components)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cl_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p5,p4,p3,p2,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="containers∈ran(components∪({Inst} × ran(new_c))) ↔ ran(components∪({Inst} × ran(new_c)))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_ty/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p1,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p5"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∈ran(components∪({Inst} × ran(new_c))) ↔ ran(components∪({Inst} × ran(new_c)))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p24"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p9,p7,p8,p5,p2,p1,p6,p4,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∈ran(components∪({Mdl} × ran(new_components))) ↔ ran(components∪({Mdl} × ran(new_components)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_mdl1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prRule name="r1" 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="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p37,p10,p40,p5,p8,p13,p3,p11,p41,p38,p24,p15,p22,p19,p32,p4,p33,p20,p23,p9,p29,p6,p39,p1,p26,p17,p16,p7,p21,p31,p2,p34,p30,p12,p36,p18,p14,p28,p27,p35,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(components[{Inst}] ⩤ container)[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="(components[{Inst}] ⩤ container)[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·container∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cont_mdl2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prRule name="r1" 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="p44"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p37,p10,p40,p5,p8,p13,p3,p11,p41,p38,p24,p15,p22,p19,p32,p4,p33,p20,p23,p9,p29,p6,p39,p1,p26,p17,p16,p7,p21,p31,p2,p34,p30,p12,p36,p18,p14,p28,p27,p35,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(components[{Inst}] ⩤ container)∼[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="container∼[({Inst} ⩤ components)[{m}]] ∖ components[{Inst}]⊆({Inst} ⩤ components)[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·container∼[({Inst} ⩤ components)[{m}]] ∖ components[{Inst}]⊆({Inst} ⩤ components)[{m}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·container∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_mdl1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1,p3,p2,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers ∖ (components[{Inst}] × components[{Inst}]))[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(containers ∖ (components[{Inst}] × components[{Inst}]))[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_mdl2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1,p3,p2,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers ∖ (components[{Inst}] × components[{Inst}]))∼[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(containers ∖ (components[{Inst}] × components[{Inst}]))∼[({Inst} ⩤ components)[{m}]]⊆({Inst} ⩤ components)[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cont_mdl1/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·container[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cont_mdl2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·container∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cl_mdl1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r1" 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="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p44,p15,p16,p17,p18,p19,p20,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p43" 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,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="containers[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·containers[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cl_mdl2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prRule name="r1" 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="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p44,p15,p16,p17,p19,p20,p21,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p43" 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,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="containers∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·containers∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_mdl1/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(container∪(ran(new_c) × {dest}))[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container∪(ran(new_c) × {dest}))[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cont_mdl2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(container∪(ran(new_c) × {dest}))∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container∪(ran(new_c) × {dest}))∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_mdl1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p4,p23,p24,p25,p26,p27,p28,p29,p30,p1,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p7"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p1,p4,p5,p2,p3">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_mdl2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p12,p13,p14,p15,p16,p17,p18,p6,p19,p20,p21,p22,p4,p23,p24,p25,p26,p27,p28,p29,p30,p1,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1,p2,p4,p5,p3,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[(components∪({Inst} × ran(new_c)))[{m}]]⊆(components∪({Inst} × ran(new_c)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_mdl1/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cont_mdl2/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" 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="p3"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(container∪((inst_components∪new_components)∼;container;(inst_components∪new_components)))∼[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_mdl1/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p4,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p6"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p2,p3,p4,p1">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_mdl2/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p12,p13,p14,p15,p16,p17,p18,p6,p19,p20,p21,p22,p5,p23,p24,p25,p26,p2,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p3,p4,p1,p5,p2,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[(components∪({Mdl} × ran(new_components)))[{m}]]⊆(components∪({Mdl} × ran(new_components)))[{m}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" 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="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst c)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p19">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p19"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19,p1,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∼[{c}]⊆containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(container∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="finite(containers∼[{c}])">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="containers∼[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p17">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p18">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈dom(weight)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))∧c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="todo∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈components[{Pat}]⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))∧c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ M">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℙ(Component × ℤ))∧c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]⇒(λc⦂Component·c∈components[{Pat}] ∣ ((components[{Pat}] ∖ dom(container))∩{c}) × (containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult))))(c)=(((components[{Pat}] ∖ dom(container))∩{c})∪(∅ ⦂ ℙ(Component×Component))[{c}]) × (λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult)))(c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="x,x0,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p47">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c0}]=ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p2,p4,p5,p23,p49,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c0}]=ran(new_c)" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p60">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p49,p58,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p49,p58,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p45"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0∈to_unfold_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p66">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (to_unfold_c_in[{c0}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p68" 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,p49,p26,p66,p58,p65,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p67">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with to_unfold_c_in[{c0}]=∅" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p67">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((to_unfold_c ∖ {c})∩{c0}={c0})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p2,p4,p68,p5,p23,p49,p66,p58,p40,p45,p65">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p71">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (to_unfold_c ∖ {c})∩{c0}={c0}" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p71">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p2,p4,p68,p5,p23,p49,p66,p58,p65,p19,p40,p45,p72">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p71"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p67"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((to_unfold_c ∖ {c})∩{c0}=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p76" 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,p49,p26,p58,p65,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p74,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p75">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (to_unfold_c ∖ {c})∩{c0}=∅" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p75">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p75" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p75"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p66"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p60"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p58"/>
</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="0.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p78">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p60">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p80,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p80,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p45"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p88">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ to ⇒ in goal" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ ∅})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p88" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p95"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites domain distribution right in hyp ((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (({c} ⩤ todo)∪{c ↦ ∅}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p97"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p97"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p97,p8,p83,p9,p10,p11,p12,p13,p93,p14,p15,p16,p17,p18,p80,p60,p19,p61,p20,p21,p22,p23,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p83,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p80,p60,p19,p88,p61,p20,p21,p22,p23,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p18,p23,p40,p45,p65">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p60"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p60">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p80,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p80,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p45"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p83,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p80,p60,p19,p61,p20,p21,p22,p23,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p65">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0∈to_unfold_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p66">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p80,p19,p20,p21,p22,p23,p24,p26,p66,p65,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p52,p20,p21,p53,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p4,p5,p23,p10,p11,p12,p65,p27,p14,p39,p80,p74,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p66"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p60"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬c0∈dom(to_unfold_c_in)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)}(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c0)⊆(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬c∈container∼[{c}] ∖ c_multiplicity∼[{0}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c0∈dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ)·x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)⇒x∈((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]∧x0∈weight(c)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬c0∈dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c0}]=ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="x∈(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="({c0}∪ran(new_c)) × weight(c0)⊆ran(new_c) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in[{c0}]∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c0}])) × weight(c0)⊆(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪ran(new_c)) × weight(c0)⊆ran(new_c) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]=ran(new_c)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="x∈((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ)·x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)⇒x ↦ x0∈(((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]) × weight(c)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="(to_unfold_c ∖ {c})∩{c0}={c0}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="x0∈weight(c)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)⊆(((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]) × weight(c)"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="(to_unfold_c ∖ {c})∩{c0}=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬x∈(to_unfold_c ∖ {c})∩{c}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c∈(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪to_unfold_c_in[{c0}]∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c0}]) × weight(c0)⊆(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="x∈((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]∧x0∈weight(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)⊆(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)⇒x∈((to_unfold_c ∖ {c})∩{c})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]∧x0∈weight(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="x∈(to_unfold_c ∖ {c})∩{c}∨x∈(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="x ↦ x0∈(((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ ({c} ⩤ todo))∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ {c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪(∅ ⦂ ℙ(Component))∪ran(new_c)) × weight(c0)⊆((∅ ⦂ ℙ(Component))∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ ((dom({c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}) ⩤ todo)∪{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)⊆(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="to_unfold_c_in[{c0}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="(dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)}) ⩤ (todo{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c0)=(((to_unfold_c ∖ {c})∩{c0})∪(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c∈container∼[{c}] ∖ c_multiplicity∼[{0}]"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c0})∪to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)⊆(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(((to_unfold_c ∖ {c})∩{c})∪to_unfold_c_in[{c}]∪ran(new_c)) × weight(c)⊆(to_unfold_c_in[{c}]∪ran(new_c)) × weight(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬x∈(to_unfold_c ∖ {c})∩{c}⇒x∈(to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (({c} ⩤ todo)∪{c ↦ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))}))(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="((∅ ⦂ ℙ(Component))∪to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)⊆(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.domDistRightRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.disjToImplRewrites"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="x,x0,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p45">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p47">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p51,p20,p21,p52,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p41"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p49,p45"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈(components∪({Inst} × ran(new_c)))[{Pat}]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x·x=Pat∧x ↦ c0∈components∪({Inst} × ran(new_c)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p54" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55,p56">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Model"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p55,p56"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x=Pat" org.eventb.core.prHyps="p56">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p57,p16,p17,p18,p56,p19,p20,p21,p22,p23,p49,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p51,p20,p21,p52,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p41"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p66">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ {dest} ⩤ todo(c)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites domain distribution right in hyp ((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (({c} ⩤ todo)∪{c ↦ {dest} ⩤ todo(c)}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c0∈container∼[{c}]∧¬c0∈c_multiplicity∼[{0}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬c0∈c_multiplicity∼[{0}]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (¬c0∈container∼[{c}]∨c0∈c_multiplicity∼[{0}])" org.eventb.core.prHyps="p74">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p75">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p76"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p78">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p75,p71,p45"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p78,p79,p20,p21,p22,p23,p81,p25,p80,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p83">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p71,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p25,p83,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p75,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p78"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p84">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p74" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p85"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p71,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p84,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p66,p14,p4,p18,p37,p39,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p87">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p78">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p60,p45"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p60,p19,p51,p20,p21,p52,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p41,p45"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c∈to_unfold_c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p88,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p60,p78,p19,p79,p20,p21,p22,p23,p90,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p91">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (to_unfold_c∩{c}=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p91"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p92">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with to_unfold_c∩{c}=∅" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p92">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p92" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((to_unfold_c_in ∖ {c ↦ dest})[{c}]=to_unfold_c_in[{c}] ∖ {dest})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p88,p9,p10,p11,p12,p13,p91,p14,p15,p16,p17,p18,p60,p78,p19,p79,p20,p21,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p96">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (to_unfold_c_in ∖ {c ↦ dest})[{c}]=to_unfold_c_in[{c}] ∖ {dest}" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p96">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p88,p9,p10,p11,p12,p13,p91,p14,p15,p16,p17,p18,p60,p78,p19,p79,p20,p21,p22,p23,p25,p96,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p40,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p98">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]=∅" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="p98">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p98" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p26,p79,p5,p6,p22,p17,p37,p18,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p98"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p96"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p92"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p83">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p51,p20,p21,p52,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p41"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p14,p4,p39,p60,p11,p40,p45,p83">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p78"/>
</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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="((to_unfold_c_in ∖ {c ↦ dest})[{c}]∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬c∈container∼[{c}] ∖ c_multiplicity∼[{0}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c0∈dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)}) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="x ↦ x0∈(((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ ({c} ⩤ todo))∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ {c ↦ {dest} ⩤ todo(c)}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="x=Pat">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="x∈(to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]∧x0∈weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="((to_unfold_c_in[{c}] ∖ {dest})∪(∅ ⦂ ℙ(Component))) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀m⦂Model·containers∼[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬c0∈dom({s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)⇒x∈(to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]∧x0∈weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬c∈container∼[{c}]"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="x ↦ x0∈(((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ ({c} ⩤ todo))∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ {c ↦ {dest} ⩤ todo(c)}))(c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}] × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="(to_unfold_c_in ∖ {c ↦ dest})[{c}]=to_unfold_c_in[{c}] ∖ {dest}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="to_unfold_c∩{c}=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="¬c∈dom((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(todo{c ↦ {dest} ⩤ todo(c)}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="¬c0∈container∼[{c}]∨c0∈c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="((to_unfold_c∩{c})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="x∈(to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ ((dom({c ↦ {dest} ⩤ todo(c)}) ⩤ todo)∪{c ↦ {dest} ⩤ todo(c)}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀m⦂Model·containers[components[{m}]]⊆components[{m}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c0∈c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="(to_unfold_c_in[{c}] ∖ {dest}) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="x∈(to_unfold_c∩{c})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬c∈to_unfold_c"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬⊥∨c0∈c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∃x⦂Model·x=Pat∧x ↦ c0∈components∪({Inst} × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="c∈(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="((∅ ⦂ ℙ(Component))∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c}]) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(todo{c ↦ {dest} ⩤ todo(c)}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="((to_unfold_c_in[{c}] ∖ {dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))[{c}]) × weight(c)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬c0∈container∼[{c}]∨¬¬c0∈c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="¬c0∈container∼[{c}]∨⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (({c} ⩤ todo)∪{c ↦ {dest} ⩤ todo(c)}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ)·x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)⇒x∈(to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]∧x0∈weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)⊆((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬(c0∈container∼[{c}]∧¬c0∈c_multiplicity∼[{0}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="(to_unfold_c_in[{c0}]∪ran(new_c)) × weight(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒(todo{c ↦ {dest} ⩤ todo(c)}{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)})(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ)·x ↦ x0∈((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)⇒x ↦ x0∈((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="x ↦ c0∈components∪({Inst} × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pat ↦ c0∈components∪({Inst} × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="x0∈weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="{s⦂Component·s∈container∼[{c}] ∖ c_multiplicity∼[{0}] ∣ s ↦ (to_unfold_c_in[{s}]∪ran(new_c)) × weight(s)}(c0)=((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∃x⦂Model·x∈{Pat}∧x ↦ c0∈components∪({Inst} × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="((container∼[{c}] ∖ c_multiplicity∼[{0}]) ⩤ (todo{c ↦ {dest} ⩤ todo(c)}))(c0)⊆((to_unfold_c∩{c0})∪((to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)))[{c0}]) × weight(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬c0∈container∼[{c}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.domDistRightRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prRule name="r1" 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="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p46">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c)" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p49">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p50,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p20,p21,p22,p23,p24,p27,p28,p29,p30,p31,p32,p33,p34,p35,p37,p38,p39,p40,p42,p41"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p36,p26,p14,p19,p46,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p20,p21,p22,p23,p24,p27,p28,p29,p30,p31,p32,p33,p34,p35,p37,p38,p39,p40,p42,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p47">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p47"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cl_compr/THM" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p10,p11,p7,p5,p9,p2,p6,p3,p1,p4,p8">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_ctr/THM" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" 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="p15"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p11,p12,p7,p5,p10,p2,p6,p3,p1,p4,p8,p9">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="weight/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈dom(weight)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c∈components[{Pat}]⇒c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈dom(weight)∧weight∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Pat}]"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_comp/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p1,p3,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{Inst} ⩤ components;(components[{Inst}] ⩤ containers);({Inst} ⩤ components)∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/weight_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prRule name="r1" 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="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p49,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p45,p18,p21,p22,p23,p24,p26,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c_mult_others=∅∧(∀pc·¬pc∈dom(inst_components)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀pc·¬pc∈dom(inst_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬[[0]]∈dom(inst_components)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p38,p12,p20,p15,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p20,p19,p14,p29,p28,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p21,p22,p23,p24,p26,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p43,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult)))∈({Inst} ⩤ components)[{Pat}] → ℙ(({Inst} ⩤ components)[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))∈({Inst} ⩤ components)[{Pat}] ⇸ ℙ(({Inst} ⩤ components)[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))∈({Inst} ⩤ components)[{Pat}] → ℙ(({Inst} ⩤ components)[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·¬¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="dom(λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨¬(∀pc⦂Component·¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="components[{Pat}]=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒(¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒ran(c_mult)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬(c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components)))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/weight/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p7" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p14,p15,p16,p17,p18,p2,p19,p20,p21,p4,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p6,p48"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1,p11,p2,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))=(containers ∖ (components[{Inst}] × components[{Inst}]))∼[{c}] → 0 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult))=(containers ∖ (components[{Inst}] × components[{Inst}]))∼[{c}] → 0 ‥ max(ran(c_mult))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ M"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]⇒containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult))=(containers ∖ (components[{Inst}] × components[{Inst}]))∼[{c}] → 0 ‥ max(ran(c_mult))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈({Inst} ⩤ components)[{Pat}]⇒containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult))=(containers ∖ (components[{Inst}] × components[{Inst}]))∼[{c}] → 0 ‥ max(ran(c_mult))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈({Inst} ⩤ components)[{Pat}]⇒(λc⦂Component·c∈components[{Pat}] ∣ containers∼[{c}] ∖ components[{Inst}] → 0 ‥ max(ran(c_mult)))(c)=(containers ∖ (components[{Inst}] × components[{Inst}]))∼[{c}] → 0 ‥ max(ran(c_mult))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/weight/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p43"/>
<org.eventb.core.prRule name="r1" 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="p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p48">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p56,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p20,p21,p22,p23,p24,p26,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p42"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p1,p2,p48,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p42">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p59" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·¬¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨¬(∀pc⦂Component·¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c∈components[{Pat}]⇒¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬(c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components)))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒ran(c_mult)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/cl_comp/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p44,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p45,p19,p46,p20,p21,p22,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p40,p41,p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)));containers;(components∪({Inst} × ran(new_c)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/weight_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prRule name="r1" 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="p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p47,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p21,p25,p5,p4,p2,p1,p3,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p43">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="weight∈(components∪({Inst} × ran(new_c)))[{Pat}] → ℙ((components∪({Inst} × ran(new_c)))[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/weight/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prRule name="r1" 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="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c0)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p52">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p39,p16,p43,p11,p14,p9,p7,p18,p33,p8,p34,p23,p38,p10,p27,p40,p25,p15,p30,p12,p42,p1,p29,p21,p19,p13,p24,p32,p3,p35,p31,p17,p37,p22,p5,p20,p44,p41,p36,p45"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p26,p6,p4,p2,p49,p39,p16,p43,p11,p14,p9,p7,p18,p33,p8,p34,p23,p38,p10,p27,p40,p25,p15,p30,p12,p42,p1,p29,p21,p19,p13,p24,p32,p3,p35,p31,p17,p37,p22,p5,p20,p44,p41,p36,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p50">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p50"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c0∈components[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="weight(c0)=containers∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒weight(c0)=containers∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_comp/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p44,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p45,p19,p46,p20,p21,p22,p23,p25,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p39,p40,p41,p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Inst} × ran(new_c)));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]));(components∪({Inst} × ran(new_c)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/weight_ty/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="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p1,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p3,p5,p43"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p3,p1,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="weight∈(components∪({Inst} × ran(new_c)))[{Pat}] → ℙ((components∪({Inst} × ran(new_c)))[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers;containers⊆containers">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/weight/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prRule name="r1" 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="p46"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p48">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p38,p16,p43,p11,p14,p9,p7,p18,p32,p8,p33,p23,p37,p10,p26,p39,p25,p15,p29,p12,p42,p1,p28,p21,p19,p13,p24,p31,p3,p34,p30,p17,p36,p22,p20,p44,p40,p35,p45"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c0)" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p52">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p41,p6,p4,p2,p49,p38,p16,p43,p11,p14,p9,p7,p18,p32,p8,p33,p23,p37,p10,p26,p39,p25,p15,p29,p12,p42,p1,p28,p21,p19,p13,p24,p31,p3,p34,p30,p17,p36,p22,p20,p44,p40,p35,p45">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p53">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with weight(c0)=containers∼[{c0}] → 0 ‥ max(ran(c_multiplicity))" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p53">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p29,p16,p6,p37,p41,p43,p14,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="containers∼[{c0}] → 0 ‥ max(ran(c_multiplicity))=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒weight(c0)=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c0∈components[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Inst} × ran(new_c)))[{Pat}]⇒weight(c)=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="weight(c0)=containers∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="weight(c0)=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∼[{c0}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c0∈(components∪({Inst} × ran(new_c)))[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_comp/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p44,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p45,p17,p46,p19,p20,p21,p22,p25,p26,p27,p28,p29,p30,p32,p34,p37,p38,p39,p40,p41,p47"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" 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,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)">
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components∪({Mdl} × ran(new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))));(components∪({Mdl} × ran(new_components)))∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/weight_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prRule name="r1" 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="p43"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p45,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p21,p22,p23,p24,p27,p28,p29,p30,p31,p32,p33,p34,p35,p37,p38,p39,p40,p42,p41"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p20,p36,p26,p14,p19,p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p21,p22,p23,p24,p27,p28,p29,p30,p31,p32,p33,p34,p35,p37,p38,p39,p40,p42,p41">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="weight∈(components∪({Mdl} × ran(new_components)))[{Pat}] → ℙ((components∪({Mdl} × ran(new_components)))[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/weight/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9,p2,p21,p22,p11,p23,p24,p25,p26,p27,p28,p29,p6,p10,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p5,p49,p3,p50,p51,p13,p20"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p1,p17,p2,p3,p53,p6,p7,p8,p9,p10,p11">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="weight" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒weight(c)=(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[{c}] → 0 ‥ M"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]⇒weight(c)=(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[{c}] → 0 ‥ M">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="weight∈components[{Pat}] → ℙ(components[{Pat}] ⇸ ℕ)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ M"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="weight(c)=(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[{c}] → 0 ‥ M">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒weight(c)=containers∼[{c}] → 0 ‥ max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="weight(c)=(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∼[{c}] → 0 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈(components∪({Mdl} × ran(new_components)))[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ">
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="todo∈components[{Pat}] → (Component ↔ (components[{Pat}] ⇸ ℕ))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒todo(c)=((to_unfold_c∩{c})∪to_unfold_c_in[{c}]) × weight(c)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="M/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,p34,p35,p36,p37,p38" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<org.eventb.core.prRule name="r1" 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="p41"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p36,p14,p38,p39"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p44"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p24">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p45"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p46">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p47">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Existence of minimum or maximum in goal with finite hypothesis" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.finiteHypBoundedGoal"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/M/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="max(ran(c_mult))=max(ran(c_mult))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(c_mult)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/M/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p38" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prRule name="r1" 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="p53"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p61,p4,p5,p6,p7,p51,p9,p10,p11,p12,p13,p14,p15,p16,p62,p63,p17,p18,p19,p20,p21,p22,p23,p50,p64,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p65,p34,p35,p37,p39,p43,p44,p45,p46,p47,p48,p49"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p35,p64,p61"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p37">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p68,p63,p31,p67"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p51,p8,p9,p10,p11,p72,p12,p13,p14,p15,p16,p18,p19,p20,p21,p22,p23,p50,p24,p25,p26,p27,p28,p29,p30,p32,p33,p34,p36,p37,p39,p41,p42,p43,p44,p45,p46,p47,p70,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p76" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p80" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p84" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p86" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p88" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·¬¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨(∃pc⦂Component·pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(c_mult)≠(∅ ⦂ ℙ(ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∨¬(∀pc⦂Component·¬pc∈dom(inst_components))"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})⇒b≥x"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))∧(∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_mult)⇒b≥x)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬(c_mult_others=(∅ ⦂ ℙ(Component×ℤ))∧(∀pc⦂Component·¬pc∈dom(inst_components)))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="M_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of range of a function" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p33,p13,p35,p36"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p40" 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,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p41">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Pat)" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p41">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p41"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/>
</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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] ⇸ ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pat"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components[{Pat}] ⇸ ℕ"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRan"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="P_fin/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p40"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prRule name="r1" 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="p42"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p41,p16,p17,p18,p19,p20,p21,p22,p23,p25,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/P/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prRule name="r1" 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="p59"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p55,p8,p54,p10,p11,p12,p13,p14,p15,p16,p17,p62,p18,p19,p20,p21,p22,p23,p24,p53,p26,p27,p58,p28,p29,p30,p31,p56,p32,p33,p34,p35,p63,p36,p37,p42,p46,p47,p48,p49,p50,p51,p52"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p37,p33,p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p55,p67,p56,p66"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p68,p7,p8,p54,p9,p10,p11,p12,p70,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p53,p26,p27,p28,p29,p30,p31,p32,p34,p35,p69,p36,p38,p40,p42,p44,p45,p46,p47,p48,p49,p50,p65,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components[{Pat}]=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="P=({Inst} ⩤ components)[{Pat}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_dom/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p7"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,m)" org.eventb.core.prGoal="p6" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p10,p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(m)⊆(P ◁ containers ▷ P)[{c}]∪{c}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈(λc⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))(c)⇒dom(m)⊆(P ◁ containers ▷ P)[{c}]∪{c}"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="m∈((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c∈P∧m∈((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult))⇒dom(m)⊆(P ◁ containers ▷ P)[{c}]∪{c}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult))⇒dom(m)⊆(P ◁ containers ▷ P)[{c}]∪{c}"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/P/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p53"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p56,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p15,p16,p18,p57,p58,p19,p20,p21,p22,p23,p24,p25,p51,p59,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p60,p37,p38,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p38,p58,p34,p59"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p56,p63,p64"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p1,p2,p61,p3,p4,p5,p6,p7,p8,p9,p52,p10,p11,p12,p67,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p39,p41,p43,p44,p45,p46,p47,p62,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="P=(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components[{Pat}]=(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/P/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prRule name="r1" 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="p52"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p55,p6,p7,p8,p9,p51,p10,p11,p12,p13,p14,p15,p16,p17,p56,p57,p18,p19,p20,p21,p22,p23,p25,p50,p58,p59,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p40,p42,p43,p44,p45,p46,p47,p48,p49"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p57,p34,p58,p59"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p62,p55,p63"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p1,p2,p60,p3,p4,p5,p6,p7,p8,p9,p51,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p50,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p38,p40,p42,p43,p44,p45,p46,p61,p47,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="P=(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components[{Pat}]=(components∪({Inst} × ran(new_c)))[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prRule name="r1" 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="p56"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p59,p60">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p7,p8,p9,p10,p55,p11,p12,p13,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p28,p54,p29,p62,p30,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p47,p48,p49,p50,p51,p52,p53"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p5,p60,p29,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p59,p65,p66,p20,p38"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p1,p2,p63,p3,p4,p6,p7,p8,p69,p9,p10,p55,p11,p12,p13,p14,p15,p16,p17,p18,p67,p19,p22,p23,p24,p25,p26,p27,p28,p54,p68,p30,p31,p32,p33,p34,p35,p36,p37,p39,p40,p64,p41,p72,p42,p44,p46,p47,p48,p49,p50,p70,p51,p52,p53">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="c0∈P∧m∈(todo{c ↦ todo(c) ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}})(c0)⇒dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{c0}]∪{c0}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c0∈components[{Pat}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{c0}]∪{c0}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="m∈(todo{c ↦ todo(c) ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="m∈(todo{c ↦ todo(c) ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈P∧m∈(todo{c ↦ todo(c) ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}})(c0)⇒dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{c0}]∪{c0}"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/P/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p53,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p49,p20,p21,p22,p24,p25,p26,p27,p29,p54,p32,p55,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p45,p46,p47,p48,p56,p57"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p36" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p55,p13,p56,p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p18">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p60,p53,p61"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p1,p2,p3,p4,p58,p5,p6,p7,p8,p9,p10,p11,p12,p14,p15,p16,p17,p18,p49,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p31,p32,p34,p35,p37,p38,p39,p40,p41,p59,p42,p43,p44,p45,p46,p47,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components[{Pat}]=(components∪({Mdl} × ran(new_components)))[{Pat}]"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="P=(components∪({Mdl} × ran(new_components)))[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prRule name="r1" 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="p54"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p57,p58">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p28,p29,p1,p2,p3,p4,p30,p31,p5,p32,p33,p6,p34,p35,p36,p37,p7,p38,p8,p53,p10,p11,p12,p14,p15,p16,p17,p18,p39,p19,p42,p44,p45,p21,p22,p46,p47,p48,p23,p24,p25,p50,p26,p51,p52,p27,p60"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p4" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p27,p60,p4"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p62,p63,p20,p35,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p1,p2,p61,p3,p5,p6,p7,p8,p53,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p64,p19,p22,p23,p24,p25,p26,p52,p65,p28,p29,p66,p30,p31,p32,p33,p34,p36,p37,p38,p69,p58,p39,p41,p42,p44,p45,p46,p47,p48,p67,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="c∈P∧m∈todo(c)⇒dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{c}]∪{c}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{c}]∪{c}"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="m∈todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{c}]∪{c}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p14,p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (todo{c ↦ ∅})(c0)" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p17,p18">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p19"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p20,p21">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p5,p4,p3,p2,p1,p14,p20,p22">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m∈(todo{c ↦ (∅ ⦂ ℙ(ℙ(Component×ℤ)))})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="m∈todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈P∧m∈(todo{c ↦ (∅ ⦂ ℙ(ℙ(Component×ℤ)))})(c0)⇒dom(m)⊆containers[{c0}]∪{c0}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c0∈P∧m∈(todo{c ↦ (∅ ⦂ ℙ(ℙ(Component×ℤ)))})(c0)⇒dom(m)⊆containers[{c0}]∪{c0}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(m)⊆containers[{c0}]∪{c0}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="m∈(∅ ⦂ ℙ(ℙ(Component×ℤ)))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="m∈({c} ⩤ todo)(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_dom/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p3" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p14,p3"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p17,p11,p15,p16"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p16">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p3"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈P⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c∈P⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="todo∈Component ⇸ ℙ(ℙ(Component × ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℙ(ℙ(Component × ℤ))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="P"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="todo_min/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p15,p14,p17"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="i ↦ c∈inst2pat_c⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="todo∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒c∈dom(todo)∧todo∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="i ↦ c∈inst2pat_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component·c∈P⇒dom(todo(c))⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="todo∈components[{Pat}] → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒dom(todo(c))⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="c∈dom(todo)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/i2p_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(∅ ⦂ ℙ(Component×Component))⇒(components[{Inst}] ⩤ containers)[{i}]⊆dom(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_min/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p5" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈(∅ ⦂ ℙ(Component×Component))⇒((∅ ⦂ ℙ(Component×Component))∼;(((containers ∖ (components[{Inst}] × components[{Inst}]))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (∅ ⦂ ℙ(Component×ℤ))))({c} × 1 ‥ max(ran(c_mult)))⊆(λc⦂Component·c∈P ∣ (containers[{c}]∪{c}) × 1 ‥ max(ran(c_mult)))(c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/i2p_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p53"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p56">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p59,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p16,p18,p60,p61,p19,p20,p21,p22,p23,p24,p25,p51,p62,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p63,p37,p38,p39,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p62,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p66,p61,p34,p65"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p8,p9,p52,p10,p11,p12,p70,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p39,p41,p43,p44,p56,p45,p46,p47,p68,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒containers[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="containers[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒containers[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="containers[{i}]⊆dom(inst2pat_c)∪dom(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_min/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="i,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p11">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"/>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(inst2pat_c∪(ran(new_c) × {c}))∩dom(c_index∪new_c∼)∩(containers∪(id ⦂ ℙ(Component×Component)))[{i}]=(∅ ⦂ ℙ(Component))∧1&gt;M">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component·i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})⇒((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ (∅ ⦂ ℙ(Component×ℤ))})(c0)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ (∅ ⦂ ℙ(Component×ℤ))})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="i ↦ c∈inst2pat_c∪(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆({c} ⩤ todo)(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})⇒((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ (∅ ⦂ ℙ(Component×ℤ))})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(inst2pat_c∪(ran(new_c) × {c}))∩dom(c_index∪new_c∼)∩(containers∪(id ⦂ ℙ(Component×Component)))[{i}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="1&gt;M"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/i2p_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p53">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p3,p5,p7,p8,p55,p9,p10,p11,p12,p13,p14,p15,p16,p56,p17,p18,p19,p49,p20,p21,p22,p23,p24,p26,p27,p28,p30,p57,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p46,p47,p48"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p56,p57"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p14,p59,p55"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p1,p2,p3,p58,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p15,p16,p17,p18,p19,p49,p20,p21,p22,p23,p24,p25,p26,p27,p28,p30,p32,p33,p53,p35,p36,p37,p38,p39,p40,p61,p41,p42,p43,p44,p45,p46,p47,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·c∈P⇒dom(todo(c))⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒dom(todo(c))⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="todo∈components[{Pat}] → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{i}]⊆dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_min/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="i,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p9"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i)" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p12">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p1,p32,p33,p2,p7,p34,p35,p36,p12,p37,p38,p39,p40,p41,p3,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p59"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p29,p61,p23"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ with ∖ in goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p61,p29,p23,p59"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p61,p29,p23,p59"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p69">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p1,p32,p33,p2,p7,p34,p35,p36,p37,p38,p39,p40,p41,p3,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p5"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p59"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p29,p61,p23"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈P⇒dom(todo(c))⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆({c} ⩤ todo)(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="(((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c} × 1 ‥ max(ran(c_multiplicity))))∩((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity))))=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})⇒((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒dom(todo(c))⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c0⦂Component,i⦂Component·i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})⇒((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))})(c0)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container⊆containers">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))})(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c} × 1 ‥ M)⊆todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity))))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component·i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})⇒((inst2pat_c∪(ran(new_c) × {c}))∼;(((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆(todo{c ↦ todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))})(c0)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="i ↦ c0∈inst2pat_c∪(ran(new_c) × {c})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="i ↦ c∈inst2pat_c∪(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="todo∈components[{Pat}] → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c0} × 1 ‥ M)⊆todo(c) ∖ ((inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))({c} × 1 ‥ M))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])">
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="((inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼)))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈components[{Pat}] → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.inclusionSetMinusRightRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/i2p_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p36" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prRule name="r1" 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="p52"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p55">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24,p25,p1,p2,p3,p57,p26,p27,p4,p28,p29,p5,p30,p31,p32,p33,p6,p34,p7,p51,p9,p10,p11,p13,p14,p16,p17,p35,p58,p38,p59,p40,p41,p18,p19,p42,p43,p45,p20,p21,p22,p48,p23,p49,p50,p60,p61"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p60,p61,p57"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p35">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p63,p64,p59,p31"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p1,p2,p62,p3,p4,p5,p6,p7,p51,p8,p9,p10,p11,p12,p13,p14,p15,p55,p16,p17,p19,p20,p21,p22,p23,p50,p24,p25,p26,p27,p28,p29,p30,p32,p33,p34,p35,p37,p38,p40,p41,p42,p43,p44,p45,p46,p66,p47,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="i∈dom(inst2pat_c)⇒(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))[{i}]⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))[{i}]⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_min/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p5,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p2,p50,p3,p51,p52,p53,p54,p8,p10"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p6,p52"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p51,p53,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,i)" org.eventb.core.prHyps="p56">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p63">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p1,p63,p15,p4,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·c∈P⇒dom(todo(c))⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;(((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="i ↦ c∈inst2pat_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]⇒dom(todo(c))⊆containers[{c}]∪{c}"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="todo∈P → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ max(ran(c_multiplicity)))⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,i⦂Component·i ↦ c∈inst2pat_c⇒(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="todo∈components[{Pat}] → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_unfold_in/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i)" org.eventb.core.prGoal="p5" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component·c ↦ i∈to_unfold_c_in⇒(inst2pat_c∼;(((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,i⦂Component·c ↦ i∈to_unfold_c_in⇒(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in⇒(inst2pat_c∼;((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index))({c} × 1 ‥ M)⊆todo(c)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="c_indexes_dom/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p11"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p17,p1,p8"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p19"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p14"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p4"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧inst2pat_c∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="i∈dom(inst2pat_c)⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧inst2pat_c∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="c_indexes_cont/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="i1,i2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prRule name="r1" 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="p8"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p9"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i1,i2)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p11,p12,p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p17,p16"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p12"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p17,p16"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p11"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i1∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="i1∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="i1∈dom(c_indexes)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="i1 ↦ i2∈containers">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="i2∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="i2∈dom(c_indexes)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i1∈dom(c_indexes)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i1∈dom(c_indexes)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="c_indexes_val/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p13">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p16,p1,p7"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p21"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p18"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p13"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p1"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="i∈dom(inst2pat_c)⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_indexes_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE7" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))∈dom(∅ ⦂ ℙ(Component×Component)) ↣ (P ⇸ 1 ‥ max(ran(c_mult)))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬c_mult=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(c_mult)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_indexes_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(∅ ⦂ ℙ(Component×Component))⇒dom((∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i))=((components[{Inst}] ⩤ containers)∪(id ⦂ ℙ(Component×Component)))[{(∅ ⦂ ℙ(Component×Component))(i)}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_indexes_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(∅ ⦂ ℙ(Component×Component))∧i2∈dom(∅ ⦂ ℙ(Component×Component))∧i1 ↦ i2∈P ◁ containers ▷ P⇒(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i2)=dom((∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i2)) ◁ (∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i1)"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/c_indexes_val/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(∅ ⦂ ℙ(Component×Component))⇒(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i)=(∅ ⦂ ℙ(Component×Component))∼;(((components[{Inst}] ⩤ containers)∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (∅ ⦂ ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_indexes_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0,x1,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prRule name="r1" 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="p55"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p58,p6,p54,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p18,p59,p60,p19,p20,p21,p22,p23,p24,p25,p52,p61,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p62,p38,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p61,p58"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p65,p60,p35,p64"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p70,p28,p1,p5,p17,p6,p54,p7,p9,p21,p24,p50,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p78,p79">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p81"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∨(x∈ran(new_c)∧{c ↦ new_c∼(x)}=x0))" org.eventb.core.prHyps="p82">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p85">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p82"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p2,p1,p63,p3,p4,p5,p6,p54,p7,p8,p9,p53,p10,p11,p12,p70,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p52,p27,p84,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p85,p40,p42,p44,p45,p46,p47,p48,p68,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p87,p88">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p82"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="p87,p88" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p84" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p89"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with {c ↦ new_c∼(x)}=x0" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p88">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p2,p1,p63,p3,p4,p5,p6,p54,p7,p8,p9,p53,p10,p11,p12,p70,p13,p14,p15,p16,p17,p18,p87,p20,p21,p22,p23,p24,p25,p52,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p40,p42,p94,p88,p44,p45,p46,p47,p48,p68,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p2,p1,p63,p3,p4,p5,p6,p54,p7,p8,p9,p53,p10,p11,p12,p70,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p52,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p40,p42,p44,p45,p46,p47,p48,p68,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="p104">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p2,p1,p63,p3,p4,p5,p6,p54,p7,p8,p9,p53,p10,p11,p12,p70,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p52,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p104,p38,p40,p42,p44,p45,p46,p47,p48,p68,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p107">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p24,p104">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p108">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p110,p111">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∼∪{i·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p111" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p113"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p113" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∼∪{i·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p115"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p115"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p115" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∼∨(x0∈ran(new_c)∧{c ↦ new_c∼(x0)}=x))" org.eventb.core.prHyps="p114">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p117">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p114"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p118"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p118"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p70,p116,p28,p1,p5,p17,p24,p42,p25,p117">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p119,p120">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p114"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p119,p120" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with {c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p120">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p116"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p70,p28,p1,p5,p17,p123,p24,p42,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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="1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p124">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p126">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p127">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p127" org.eventb.core.prHyps="p39">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c)∪dom(ran(new_c) × {c}) ↔ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="{c ↦ new_c∼(i)}∈components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))∧i∈dom(inst2pat_c)∪dom(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c∪(ran(new_c) × {c})) ⤔ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c∪(ran(new_c) × {c})) ⤔ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="c_indexes∼⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) × (dom(inst2pat_c)∪dom(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧{c ↦ new_c∼(x1)}={c ↦ new_c∼(x0)})">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x ↦ x0∈c_indexes∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="dom(c_indexes)∪ran(new_c)=dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="x∈ran(new_c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∼∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ⇸ dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) × (dom(inst2pat_c)∪dom(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x0∈ran(new_c)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="i∈ran(new_c)⇒{c ↦ new_c∼(i)}∈components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))∧i∈dom(inst2pat_c)∪dom(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="dom(c_indexes)∪ran(new_c)=dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧new_c∼(x1)=new_c∼(x0))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c∪(ran(new_c) × {c})) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="{c ↦ new_c∼(x0)}=x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c∪(ran(new_c) × {c})) ⤔ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="i∈dom(inst2pat_c)∪dom(ran(new_c) × {c})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="x ↦ x1∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c)∪dom(ran(new_c) × {c}) ⇸ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ),x0⦂Component,x1⦂Component·x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}∧x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}⇒x0=x1"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="{c ↦ new_c∼(i)}∈components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈dom(inst2pat_c)∪dom(ran(new_c) × {c}) ⤔ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧{c ↦ new_c∼(x1)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}∧x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="⊤∨(x∈ran(new_c)∧{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∼∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ⇸ dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="x ↦ x0∈c_indexes∨x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ⇸ dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="⊤∨(x0∈ran(new_c)∧{c ↦ new_c∼(x0)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(x∈ran(new_c)∧{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(⊤∧{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="x ↦ x1∈c_indexes∨{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒{c ↦ new_c∼(i)}∈components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))∧i∈dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ),x1⦂ℙ(Component×ℤ)·x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}⇒x0=x1"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="c_indexes∼⊆(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) × (dom(inst2pat_c)∪dom(ran(new_c) × {c}))∧(∀i⦂Component·i∈ran(new_c)⇒{c ↦ new_c∼(i)}∈components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))∧i∈dom(inst2pat_c)∪dom(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="x ↦ x0∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨(x0∈ran(new_c)∧{c ↦ new_c∼(x0)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})=dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})=dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="{c ↦ new_c∼(x)}=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ↔ dom(inst2pat_c)∪dom(ran(new_c) × {c})"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="x ↦ x1∈c_indexes∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨x ↦ x1∈{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(x∈ran(new_c)∧{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="x ↦ x1∈c_indexes∨x ↦ x1∈{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_indexes_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prRule name="r1" 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="p54"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p60">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=c" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p63,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p18,p64,p65,p19,p20,p21,p22,p23,p24,p25,p52,p66,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p42,p44,p45,p57,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p66,p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p65,p34,p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p73,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p38,p61,p40,p42,p44,p45,p57,p46,p47,p48,p71,p49,p50,p60,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p75">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p76">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (i∉dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p27,p57,p1,p76,p3,p5,p17,p75">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p77">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)={c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p76">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p27,p57,p1,p76,p3,p5,p17,p78,p75">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p63,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p18,p64,p65,p19,p20,p21,p22,p23,p24,p25,p52,p66,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p66,p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p65,p34,p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p73,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p78,p32,p33,p35,p36,p37,p76,p38,p40,p42,p75,p44,p45,p57,p46,p47,p48,p71,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p27,p57,p1,p76,p3,p5,p17,p78,p75">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p88,p85,p90,p91,p89">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p91"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p27,p57,p1,p76,p3,p5,p17,p89,p88,p85,p78,p75">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p88,p92,p85,p90,p91,p89">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p91"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)={c ↦ new_c∼(i)}" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p92">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((inst2pat_c∪(ran(new_c) × {c}))(i)=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p57">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="p27,p1,p3,p5,p17,p88,p92,p78,p75,p57,p76,p89,p85,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p57,p97">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p27,p1,p97,p3,p5,p17,p88,p92,p78,p75,p57,p76,p89,p85">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p57,p98,p97">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (inst2pat_c∪(ran(new_c) × {c}))(i)=c" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p98">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c∉dom(containers))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p63,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p18,p64,p65,p19,p20,p21,p22,p23,p24,p25,p52,p66,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p39,p66,p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p65,p34,p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p88,p6,p7,p8,p9,p89,p53,p10,p11,p12,p73,p13,p14,p15,p16,p17,p18,p92,p98,p20,p21,p22,p23,p85,p24,p25,p52,p26,p27,p28,p97,p29,p30,p31,p78,p32,p33,p35,p36,p37,p76,p38,p40,p42,p75,p44,p45,p57,p46,p47,p48,p71,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p100">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p27,p1,p97,p3,p5,p17,p88,p92,p101,p78,p75,p57,p98,p76,p89,p85">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p100"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p98"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p92"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p102">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p27,p57,p1,p3,p5,p17,p102,p75">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p60"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="c∉dom(containers)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="{c}=(containers∪(id ⦂ ℙ(Component×Component)))[{c}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬i∈components[{Inst}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)={c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(c))=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(c)}]"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))∧inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="⊤∧inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="dom({c ↦ new_c∼(i)})=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="i∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="i∉dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="¬c∈dom(containers)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="i∈dom(new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))(i)=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="{c}=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c∈dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="i∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_indexes_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i1,i,i2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prRule name="r1" 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="p55"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i1,i2)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p58,p59,p60">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p63">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p64,p6,p7,p8,p9,p54,p10,p11,p12,p13,p14,p15,p16,p18,p65,p20,p21,p22,p23,p24,p25,p26,p53,p66,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p45,p46,p47,p48,p49,p50,p51,p52"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p66,p64"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p65,p35,p68"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p54,p10,p11,p12,p73,p13,p14,p15,p16,p17,p18,p19,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p63,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p75">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p64,p6,p7,p8,p9,p54,p10,p11,p12,p13,p14,p15,p16,p18,p65,p20,p21,p22,p23,p24,p25,p26,p53,p66,p27,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p45,p46,p47,p48,p49,p50,p51,p52"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p66,p64"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p65,p35,p68"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=c_indexes(i2))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p80">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p80"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p54,p10,p11,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p80,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p54,p10,p11,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p54,p10,p11,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p7,p8,p9,p54,p10,p11,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p40"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p84,p83,p86,p85,p87">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p84,p86,p78,p7,p8,p9,p54,p10,p11,p85,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p83,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p84,p83,p86,p88,p85,p87">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=c_indexes(i2)" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p88">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p84,p86,p78,p7,p8,p90,p9,p54,p10,p11,p85,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p83,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p43,p45,p46,p88,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p91">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p1,p2,p67,p3,p4,p5,p6,p84,p86,p78,p7,p8,p9,p54,p10,p11,p85,p12,p73,p75,p13,p14,p15,p16,p17,p18,p19,p83,p58,p21,p60,p22,p23,p24,p25,p26,p53,p27,p28,p29,p30,p31,p32,p33,p34,p36,p37,p38,p39,p59,p41,p91,p43,p45,p46,p88,p47,p48,p49,p71,p50,p51,p52">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p88"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p63"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="i1∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i2∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i1 ↦ i2∈containers⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="i1∈ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="i2∈dom(c_indexes)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ)∧i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="¬i2∈ran(new_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="i1∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="i1 ↦ i2∈containers">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i2∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i1 ↦ i2∈containers⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i1)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="i2∈ran(new_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="i2∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬i1∈ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i2)=c_indexes(i2)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="c_indexes(i2)=dom(c_indexes(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_indexes_val/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p53"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p56">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p59">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p60,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p15,p16,p18,p61,p62,p19,p20,p21,p22,p23,p24,p25,p51,p63,p26,p29,p30,p31,p32,p33,p34,p35,p36,p64,p37,p38,p39,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p63,p60"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p62,p34,p66"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p1,p2,p65,p3,p4,p5,p6,p7,p8,p9,p52,p10,p11,p12,p71,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p59,p37,p39,p41,p43,p44,p56,p45,p46,p47,p69,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p73">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p60,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p15,p16,p18,p61,p62,p19,p20,p21,p22,p23,p24,p25,p51,p63,p26,p29,p30,p31,p32,p33,p34,p35,p36,p64,p37,p38,p39,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p63,p60"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p62,p34,p66"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p27,p56,p3,p5,p16,p17,p25,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p59"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/c_indexes/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p23"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p4,p3,p2,p1,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_indexes_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0,x1,x2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(ran(new_c) × {c})=ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p68">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p68">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(ran(new_c) × {c})=ran(new_c)" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p68">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p81,p49,p31,p1,p3,p15,p5,p68,p64,p55,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p85,p86">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p85" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p88"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p88" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p86" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p90"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p89" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p92"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p92" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p94"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p94" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0))" org.eventb.core.prHyps="p93">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p96">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p97"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p97"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p64,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p96,p41,p95,p44,p46,p49,p50,p51,p52,p53,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p98,p99">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="p98,p99" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="p98" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p100"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p99">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p98,p21,p22,p23,p24,p64,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p41,p44,p46,p105,p49,p50,p51,p52,p53,p80,p99,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p106">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p81,p49,p31,p5,p68,p64,p55,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p112">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p114,p115">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p115" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p117"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p117"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p117" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p118"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p119"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p119" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p120"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∼∪{i·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p118" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∼∪{i·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p120" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p123"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p123" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p124"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∼∨(x0∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x))" org.eventb.core.prHyps="p122">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p125">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p122"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="p125" org.eventb.core.prInfHyps="p126"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p126"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x))" org.eventb.core.prHyps="p124">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p127">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="p127" org.eventb.core.prInfHyps="p128"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p128"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p125,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p64,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p41,p127,p44,p46,p49,p50,p51,p52,p53,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p129,p130">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="p129,p130" org.eventb.core.prInfHyps="p131"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p131"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p125" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)} ↦ x0∈c_indexes∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p133"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes(x0)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p129">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p136">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p137">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p138">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p138" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p129,p21,p22,p23,p24,p64,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p44,p46,p49,p50,p133,p51,p52,p53,p130,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p139">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p140">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p140">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p141" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p142,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p129,p21,p22,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p142,p44,p46,p49,p50,p133,p51,p52,p53,p130,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p143">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p143" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p143">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p144"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p142,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p143" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p8,p77,p10,p11,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p129,p21,p22,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p142,p44,p46,p49,p50,p133,p51,p52,p53,p130,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p146" org.eventb.core.prHyps="p139,p145,p138,p140,p143">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p146" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p139,p7,p8,p77,p10,p11,p138,p143,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p129,p21,p22,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p44,p46,p49,p50,p133,p51,p52,p53,p140,p130,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p139,p146,p145,p138,p140,p143">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst x0)" org.eventb.core.prHyps="p32">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p148">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p139,p7,p8,p77,p10,p11,p138,p143,p59,p12,p13,p14,p61,p81,p16,p15,p17,p18,p19,p129,p146,p21,p22,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p44,p46,p49,p50,p133,p51,p52,p53,p140,p130,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p149">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p32"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_indexes(x0)=inst2pat_c∼;((containers∪id)[{x0}] ◁ c_index)" org.eventb.core.prHyps="p149">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (inst2pat_c∼;((containers∪id)[{x0}] ◁ c_index)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p150" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p151,p152"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p151,p152"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p153,p154"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c ↦ new_c∼(x1)∈inst2pat_c∼;((containers∪id)[{x0}] ◁ c_index)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p155"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x·c ↦ x∈inst2pat_c∼∧x ↦ new_c∼(x1)∈(containers∪id)[{x0}] ◁ c_index)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p155" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p156,p157">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p156,p157"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c ↦ x2∈inst2pat_c∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p157" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p158"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_index(x2)=new_c∼(x1))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p159">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p159" org.eventb.core.prHyps="p143">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p160">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p160" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p161">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p161" org.eventb.core.prHyps="p129">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p162">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p162" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p163">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p165">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p146,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p165" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p139,p7,p149,p8,p77,p10,p11,p138,p143,p59,p12,p13,p14,p61,p81,p156,p16,p15,p17,p18,p19,p129,p21,p146,p22,p154,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p44,p46,p49,p50,p133,p51,p52,p53,p140,p130,p80,p54,p55,p158,p56,p152">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p166">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p41"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p167" org.eventb.core.prHyps="p164,p166,p145,p143">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p16,p15,p17,p18,p19,p20,p21,p146,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p167" org.eventb.core.prHyps="p2,p1,p75,p3,p164,p4,p166,p5,p68,p6,p139,p7,p149,p8,p77,p10,p11,p138,p143,p59,p12,p13,p14,p61,p81,p156,p16,p15,p17,p18,p19,p129,p21,p146,p22,p154,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p132,p78,p41,p44,p46,p49,p50,p133,p51,p52,p53,p140,p130,p80,p54,p55,p158,p56,p152">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p164,p166,p145,p167,p143">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p145" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (x2∈(containers∪id)[{x0}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p168">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p168" org.eventb.core.prHyps="p42,p31,p156,p3,p164,p166,p5,p167,p68,p139,p129,p149,p133,p138,p140,p130,p143,p154,p27,p158,p152">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p168">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((containers∪id)[{x0}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p168" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p169"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p169"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p169" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p170"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x2∈containers[{x0}]∪{x0}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p170" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p171"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p171"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p171" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p172"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x2∈containers[{x0}]∨x2=x0)" org.eventb.core.prHyps="p172">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p173">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p172"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p172" org.eventb.core.prHyps="p173" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p174"/>
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst c,dest,_)" org.eventb.core.prHyps="p61">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p175">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p175" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p176"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p176" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p177"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p125" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p178"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p178"/>
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="lae in x0 ↦ x∈c_indexes" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p178" org.eventb.core.prHyps="p130" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c_indexes(x0))" org.eventb.core.prHyps="p177">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p179">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p177"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p179" org.eventb.core.prHyps="p138,p139">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p180">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p180" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p181" org.eventb.core.prHyps="p138,p139" org.eventb.core.prUnsel="p138,p139">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p177"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p181" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p182">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p177,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p146,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="p2,p1,p75,p3,p164,p4,p166,p5,p177,p68,p6,p139,p7,p149,p8,p77,p10,p11,p138,p143,p59,p12,p13,p14,p61,p81,p156,p16,p15,p17,p18,p19,p129,p21,p146,p22,p154,p23,p24,p25,p27,p28,p58,p30,p31,p32,p33,p34,p60,p35,p36,p37,p39,p40,p173,p78,p41,p167,p44,p46,p49,p50,p133,p51,p52,p53,p140,p130,p80,p54,p55,p158,p56,p152">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p183">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p183" org.eventb.core.prHyps="p42,p31,p156,p3,p164,p166,p5,p167,p68,p139,p173,p129,p149,p133,p138,p140,p130,p143,p154,p27,p158,p152">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p184,p138,p139" org.eventb.core.prUnsel="p138,p139">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p177"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p177,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p146,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p129,p81,p32,p156,p133,p164,p5,p130,p184,p27,p158,p173">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2,e3,"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p185">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p172"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p172" org.eventb.core.prHyps="p185" org.eventb.core.prInfHyps="p186"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p186"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x2=x0" org.eventb.core.prHyps="p185">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p156" org.eventb.core.prInfHyps="p187"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p158" org.eventb.core.prInfHyps="p188"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p164" org.eventb.core.prInfHyps="p189"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p190"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p156,p164,p158,p167"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p164,p6,p7,p8,p10,p62,p11,p59,p12,p13,p125,p14,p61,p156,p16,p15,p17,p18,p19,p20,p21,p146,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p167,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56,p158"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prHyps="p129,p61,p133,p140,p139,p187,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p168"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p167"/>
</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.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.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p146"/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p191,p192">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p122"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="p191,p192" org.eventb.core.prInfHyps="p193"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p193"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p194"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}))" org.eventb.core.prHyps="p194">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p195">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p194" org.eventb.core.prHyps="p195" org.eventb.core.prInfHyps="p196"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p196"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p195" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p197"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p197"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes(x1)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p198">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p198" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p199">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p199" org.eventb.core.prHyps="p191">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p200">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p200" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p201">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p201" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p202">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p124,p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p64,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p202" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p192,p8,p77,p10,p11,p59,p12,p13,p197,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p64,p25,p194,p27,p28,p58,p30,p31,p191,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p41,p44,p46,p49,p50,p51,p52,p53,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p139">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p140">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p140">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p141" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p124,p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p142,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p192,p8,p77,p10,p11,p59,p12,p13,p197,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p25,p194,p27,p28,p58,p30,p31,p191,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p41,p142,p44,p46,p49,p50,p51,p52,p53,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p143">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p143" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p143">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p144"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p124,p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p142,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p143" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p7,p192,p8,p77,p10,p11,p59,p12,p13,p197,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p25,p194,p27,p28,p58,p30,p31,p191,p32,p33,p34,p60,p35,p36,p37,p39,p40,p78,p41,p142,p44,p46,p49,p50,p51,p52,p53,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p204" org.eventb.core.prHyps="p139,p140,p203,p202,p143">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p203" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p191"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p124,p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p204" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p139,p7,p192,p8,p77,p10,p11,p143,p59,p12,p13,p197,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p25,p194,p27,p28,p58,p30,p31,p191,p32,p33,p202,p34,p60,p35,p36,p37,p39,p40,p78,p41,p44,p46,p49,p50,p51,p52,p53,p140,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p204,p139,p140,p203,p202,p143">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,dest,c_indexes(x1))" org.eventb.core.prHyps="p61">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p205">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p205" org.eventb.core.prHyps="p139,p202">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p180">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p180" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p203" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p191"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p206" org.eventb.core.prHyps="p205" org.eventb.core.prUnsel="p205">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p206" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p207">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p205" org.eventb.core.prHyps="p139,p202" org.eventb.core.prInfHyps="p180"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p207" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p208">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p203" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p191"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p208" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p209">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p124,p2,p1,p4,p6,p7,p8,p10,p62,p11,p59,p12,p13,p14,p61,p16,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p58,p30,p32,p33,p34,p60,p35,p36,p63,p37,p38,p39,p40,p74,p41,p44,p46,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p124"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p63,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p76"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p209" org.eventb.core.prHyps="p2,p1,p75,p3,p4,p5,p68,p6,p139,p7,p192,p8,p77,p10,p11,p143,p59,p12,p13,p197,p14,p61,p81,p16,p15,p17,p18,p19,p21,p22,p23,p24,p25,p194,p27,p28,p58,p204,p30,p31,p191,p32,p33,p202,p34,p60,p35,p36,p37,p39,p40,p78,p41,p44,p46,p49,p50,p51,p52,p53,p140,p80,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p210">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p210" org.eventb.core.prHyps="p42,p204,p31,p191,p3,p5,p202,p68,p139,p192,p140,p143,p27,p197">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p211,p205" org.eventb.core.prUnsel="p205">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="p139,p140,p143" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p205" org.eventb.core.prHyps="p139,p202" org.eventb.core.prInfHyps="p180"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p203" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p191"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p147"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p42,p191,p211,p197">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2,e3,e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p204"/>
</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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p129,p212">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p194"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="p129" org.eventb.core.prInfHyps="p213"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p194" org.eventb.core.prHyps="p129,p212" org.eventb.core.prInfHyps="p214"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p213" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p215"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p214"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x" org.eventb.core.prHyps="p192">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p215" org.eventb.core.prInfHyps="p216"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p215"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p216" org.eventb.core.prHyps="p212" org.eventb.core.prInfHyps="p217"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p217"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p42,p191,p5,p212">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</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="0"/>
</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.prAnte name="(" org.eventb.core.prGoal="p218">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p218" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p219">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p219" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p220">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p220" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p221">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p221" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p222">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p222" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</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="0"/>
</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="1.0.0"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p68"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ⇸ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p177" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ)·c_indexes(dest)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ↔ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p192" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ)·c ↦ dest∈to_unfold_c_in∧c_indexes(dest)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p187" org.eventb.core.predicate="x0 ↦ new_c∼(x1)∈(containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="x ↦ x0∈c_indexes∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈dom(inst2pat_c)∪ran(new_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ⤔ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p184" org.eventb.core.predicate="¬c∈dom(c_indexes(x0))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p211" org.eventb.core.predicate="¬c∈dom(c_indexes(x1))">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="x∈ran(new_c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨x ↦ x1∈{i⦂Component·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p183" org.eventb.core.predicate="c_indexes(x0)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p170" org.eventb.core.predicate="x2∈containers[{x0}]∪{x0}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p202" org.eventb.core.predicate="x1∈dom(c_indexes)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(⊤∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∈(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity))) ↔ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="x ↦ x1∈c_indexes∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p221" org.eventb.core.predicate="dom(inst2pat_c)∪ran(new_c)=components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p218" org.eventb.core.predicate="dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})=components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∼∈(P ⇸ 1 ‥ M) ⇸ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="x0∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="∀x⦂ℙ(Component×ℤ),x0⦂Component,x1⦂Component·x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∧x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}⇒x0=x1"/>
<org.eventb.core.prPred name="p195" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p212" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p220" org.eventb.core.predicate="dom(c_indexes)∪ran(new_c)=components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p180" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p166" org.eventb.core.predicate="c_index∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="⊤∨(x0∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p210" org.eventb.core.predicate="c_indexes(x1)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p206" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in∧c_indexes(dest)⊆c_indexes(x1)∧c_indexes(x1)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p203" org.eventb.core.predicate="x0∈dom(new_c∼)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="x0∈dom(c_indexes)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p168" org.eventb.core.predicate="x2∈(containers∪(id ⦂ ℙ(Component×Component)))[{x0}]">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p174" org.eventb.core.predicate="⊤∨x2=x0">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p197" org.eventb.core.predicate="x1 ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}∈c_indexes">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p156" org.eventb.core.predicate="x2 ↦ new_c∼(x1)∈(containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p196" org.eventb.core.predicate="⊤∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)})">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="x0∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p215" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="x1∈ran(new_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ↔ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="c ↦ new_c∼(x1)∈inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p204" org.eventb.core.predicate="c_indexes(x1)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p162" org.eventb.core.predicate="x2∈dom(c_index)∧c_index∈Component ⇸ ℤ∧⊤">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p173" org.eventb.core.predicate="x2∈containers[{x0}]">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="x ↦ x0∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="x0∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p179" org.eventb.core.predicate="x0∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="x ↦ x1∈c_indexes∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p200" org.eventb.core.predicate="x1∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p207" org.eventb.core.predicate="⊤∧c_indexes(dest)⊆c_indexes(x1)∧c_indexes(x1)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p181" org.eventb.core.predicate="c_indexes(dest)⊆c_indexes(x0)∧c_indexes(x0)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p209" org.eventb.core.predicate="c_indexes(dest)⊆c_indexes(x1)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈dom(inst2pat_c∪(ran(new_c) × {c})) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊥∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}⊆inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="x0 ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}∈c_indexes">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p193" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p217" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨⊤">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∧x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p201" org.eventb.core.predicate="x1∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="c_indexes(x0)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p216" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈dom(inst2pat_c)∪dom(ran(new_c) × {c}) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p199" org.eventb.core.predicate="x1∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧x0∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨(x0∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="x ↦ x0∈c_indexes∨x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="⊤∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p188" org.eventb.core.predicate="x0 ↦ c∈inst2pat_c">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊤∧⊤∧i∈ran(new_c)∧⊤"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p165" org.eventb.core.predicate="x2∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="{c} ⩤ c_indexes(dest)⊆inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p194" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)})">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p189" org.eventb.core.predicate="x0∈dom(c_index)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈components[{Inst}]∪ran(new_c) ↔ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p160" org.eventb.core.predicate="x2∈dom(c_index)∧c_index∈Component ⇸ ℤ∧x1∈dom(new_c∼)∧⊤">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p191" org.eventb.core.predicate="x0∈ran(new_c)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p172" org.eventb.core.predicate="x2∈containers[{x0}]∨x2=x0">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p214" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x0)} ↦ x1∈c_indexes∼∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p169" org.eventb.core.predicate="x2∈containers[{x0}]∪(id ⦂ ℙ(Component×Component))[{x0}]">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p213" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∨(⊤∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀i⦂Component·¬i∈ran(new_c)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p167" org.eventb.core.predicate="c_index(x2)=new_c∼(x1)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="x ↦ x1∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∈(P ⇸ 1 ‥ M) ⇸ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="x ↦ x1∈c_indexes∨x ↦ x1∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p222" org.eventb.core.predicate="components[{Inst}]∪ran(new_c)=components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index)⊆({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="x ↦ x1∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p164" org.eventb.core.predicate="x2∈dom(c_index)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧⊥"/>
<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ)·⊤∧c_indexes(dest)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="dom(ran(new_c) × {c})=ran(new_c)"/>
<org.eventb.core.prPred name="p205" org.eventb.core.predicate="x1∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p161" org.eventb.core.predicate="x2∈dom(c_index)∧c_index∈Component ⇸ ℤ∧x1∈ran(new_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p190" org.eventb.core.predicate="c_index(x0)=new_c∼(x1)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p219" org.eventb.core.predicate="dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})=components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∈(P ⇸ 1 ‥ max(ran(c_multiplicity))) ↔ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="⊤∨(x1∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}=x)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p186" org.eventb.core.predicate="x2∈containers[{x0}]∨⊤">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p182" org.eventb.core.predicate="c_indexes(dest)⊆c_indexes(x0)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="x0∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧x1∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="c_indexes(x0)=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∃x⦂Component·c ↦ x∈inst2pat_c∼∧x ↦ new_c∼(x1)∈(containers∪(id ⦂ ℙ(Component×Component)))[{x0}] ◁ c_index">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="x0∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧x1∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p171" org.eventb.core.predicate="x2∈containers[{x0}]∨x2∈{x0}">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}∈(P ⇸ 1 ‥ M) ↔ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p178" org.eventb.core.predicate="x0 ↦ x∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="x1∈dom(new_c∼)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p159" org.eventb.core.predicate="x2∈dom(c_index)∧c_index∈Component ⇸ ℤ∧x1∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p185" org.eventb.core.predicate="x2=x0">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x1)} ↦ x0∈c_indexes∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p208" org.eventb.core.predicate="c_indexes(dest)⊆c_indexes(x1)∧c_indexes(x1)∈ran(c_indexes)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p163" org.eventb.core.predicate="x2∈dom(c_index)∧c_index∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p198" org.eventb.core.predicate="x1∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧x0∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p157" org.eventb.core.predicate="c ↦ x2∈inst2pat_c∼">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∼∈(P ⇸ 1 ‥ M) ⇸ components[{Inst}]∪ran(new_c)"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="x ↦ x1∈c_indexes∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="x ↦ x0∈c_indexes∼∨x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)} ↦ i}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ),x1⦂ℙ(Component×ℤ)·x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1"/>
<org.eventb.core.prPred name="p158" org.eventb.core.predicate="x2 ↦ c∈inst2pat_c">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="c"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e4" org.eventb.core.expression="x0">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="dest"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="c_indexes(x0)">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e5" org.eventb.core.expression="c_indexes(x1)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e6" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.locEq"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_indexes_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i0,x0,x,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prRule name="r1" 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="p55"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p58">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p61,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p62,p63,p18,p19,p20,p21,p22,p23,p25,p52,p64,p65,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p64,p65,p61"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p68,p63,p34"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in goal" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x)" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p78">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x∈dom((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p82"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x0·x ↦ x0∈(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p83">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p85">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p61,p67,p68,p63,p34,p64,p65"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (i∉dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p88">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p88" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (x ↦ x0∈{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}(i))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p85">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i0)" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p98">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p98,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p39"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p98"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p98,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p103">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p103,p104,p105">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p103,p104,p105,p106">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p108"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p108" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈{c} ⩤ c_indexes(dest)∨(x=c∧x0=new_c∼(i)))" org.eventb.core.prHyps="p109">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p110">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p109"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p109" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p111"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p111"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈{c} ⩤ c_indexes(dest)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p112,p113"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p112,p113"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p116">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ to ⇒ in goal" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p118">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((inst2pat_c∪(ran(new_c) × {c}))(i)=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p118,p19,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p58,p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p118,p19,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p122,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p58,p123,p122">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (inst2pat_c∪(ran(new_c) × {c}))(i)=c" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p123">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p125">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p124"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p118"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p114">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p126">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p127">
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p127" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129" org.eventb.core.prHyps="p128">
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(x∈(ran(new_c) × {dest})[{c}]∨x∈(ran(new_c) × containers[{dest}])[{c}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p128" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130,p131"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p130,p131"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p130,p131"/>
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p132">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p124,p19,p123,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p122,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p133">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (x∈(containers∪id)[{inst2pat_c(dest)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p124,p19,p123,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p122,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p40,p42,p133,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p135,p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p124,p135,p19,p123,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p122,p83,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p132,p38,p40,p42,p133,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p136,p135,p132">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in hyp ((containers∪id)[{inst2pat_c(dest)}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p136" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p137"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p137"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p137" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p138"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c ↦ inst2pat_c(dest)∈container)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p135,p132">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p139">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p135,p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p7,p113,p114,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p124,p135,p19,p123,p103,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p122,p83,p29,p30,p31,p138,p32,p89,p33,p34,p35,p36,p85,p132,p38,p40,p42,p133,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p135,p140,p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p26,p27,p3,p4,p5,p30,p124,p138,p58,p85,p47,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p140"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p136"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p141,p142">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p109"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p109" org.eventb.core.prHyps="p141,p142" org.eventb.core.prInfHyps="p143"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x=c" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p142">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p145">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p144"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x0=new_c∼(i)" org.eventb.core.prHyps="p141">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p144"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p146,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p103,p141,p20,p21,p22,p96,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p89,p33,p34,p35,p36,p85,p38,p142,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p106"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p88"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p147">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p61,p67,p68,p63,p34,p64,p65"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p147,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p83,p29,p30,p31,p32,p33,p34,p35,p36,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p85"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</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="0.0.0.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p148">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p4,p61,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p62,p63,p18,p19,p20,p21,p22,p23,p25,p52,p64,p65,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p40,p42,p44,p45,p46,p47,p48,p49,p50,p51"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p64,p65,p61"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p68,p63,p34"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p85">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p61,p67,p68,p63,p34,p64,p65"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p149">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=c" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p149">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p152">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p85" org.eventb.core.prInfHyps="p151"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p58,p85"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p152" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p151,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p38,p150,p40,p42,p44,p45,p46,p47,p48,p70,p49,p50,p149,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p153">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p154">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p154" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p155">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p156">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (i∉dom(inst2pat_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p157">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p157" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((inst2pat_c∪(ran(new_c) × {c}))(i)=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p58,p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p58,p123,p122">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (inst2pat_c∪(ran(new_c) × {c}))(i)=c" org.eventb.core.prGoal="p156" org.eventb.core.prHyps="p123">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p158">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p159">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p159" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p160">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p160" org.eventb.core.prHyps="p85">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p161">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p161" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p162">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p162" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p163">
<org.eventb.core.prRule name="r26" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p165">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p165" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p166">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p37,p39,p167,p168,p169,p170,p171"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p172"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p173"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p175"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p176"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p167,p168,p170,p171"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p172" org.eventb.core.prInfHyps="p177"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p173" org.eventb.core.prInfHyps="p178"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p176" org.eventb.core.prInfHyps="p179"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p173,p172,p176"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p177,p58,p1,p14,p5,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p39"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="p163,p100,p180,p102,p101,p181,p166">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p181" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p166,p40,p42,p153,p44,p45,p58,p46,p47,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p163,p182,p100,p180,p102,p101,p181,p166">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p181" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prGoal="p158" org.eventb.core.prHyps="p182">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p183">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in goal" org.eventb.core.prGoal="p183" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p184">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p184" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p185">
<org.eventb.core.prRule name="r26" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p185" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p186">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p186" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p187">
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p132">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p166,p40,p42,p153,p44,p45,p58,p46,p47,p182,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p133">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(dest))=(containers∪id)[{inst2pat_c(dest)}]" org.eventb.core.prGoal="p187" org.eventb.core.prHyps="p133">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p188">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p188" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p189">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p189" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p190">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c ↦ inst2pat_c(dest)∈container)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p166,p40,p42,p133,p153,p44,p45,p58,p46,p47,p182,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p135,p132">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p26,p4,p132,p24,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p135,p140,p132">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p37"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p190" org.eventb.core.prHyps="p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p135,p19,p123,p20,p21,p22,p23,p24,p25,p52,p90,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p37,p85,p140,p132,p38,p166,p40,p42,p133,p153,p44,p45,p58,p46,p47,p182,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p140"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p182"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p157"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p191">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p191" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p192">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p192" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p193">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((inst2pat_c∪(ran(new_c) × {c}))(i)=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p58,p122">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p58,p123,p122">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (inst2pat_c∪(ran(new_c) × {c}))(i)=c" org.eventb.core.prGoal="p193" org.eventb.core.prHyps="p123">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p194">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p159">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p159" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p160">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p160" org.eventb.core.prHyps="p85">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p161">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p161" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p162">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p162" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p163">
<org.eventb.core.prRule name="r26" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p165">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p165" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p166">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p37,p39,p167,p168,p169,p170,p171"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p172"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p173"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p167" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p175"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p176"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p39,p167,p168,p170,p171"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p40">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p172" org.eventb.core.prInfHyps="p177"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p173" org.eventb.core.prInfHyps="p178"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p176" org.eventb.core.prInfHyps="p179"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p173,p172,p176"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p177,p58,p1,p14,p5,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p39"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p40,p42,p153,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="p163,p100,p180,p102,p101,p181,p166">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p181" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p182" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p166,p40,p42,p153,p44,p45,p58,p46,p47,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p163,p182,p100,p180,p102,p101,p181,p166">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p181" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prGoal="p194" org.eventb.core.prHyps="p182">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p195">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p195" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p101,p7,p8,p9,p53,p102,p10,p11,p12,p13,p14,p15,p16,p17,p19,p123,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p163,p122,p29,p30,p31,p32,p33,p34,p35,p36,p85,p38,p166,p40,p42,p153,p44,p45,p58,p46,p47,p182,p48,p100,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p182"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p149"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p147">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p147,p8,p9,p53,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p52,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p38,p40,p42,p44,p45,p58,p46,p47,p48,p70,p49,p50,p51">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p85"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="x∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="x∈containers[{inst2pat_c(dest)}]∪(id ⦂ ℙ(Component×Component))[{inst2pat_c(dest)}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p195" org.eventb.core.predicate="c∈dom(c_indexes(dest){c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x ↦ x0∈c_indexes(dest)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p160" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ c_indexes(dest)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬i∈components[{Inst}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p186" org.eventb.core.predicate="containers[{c}]⊆dom({c} ⩤ c_indexes(dest))∪dom({c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="x∈(ran(new_c) × {dest})[{c}]∨x∈(ran(new_c) × containers[{dest}])[{c}]∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="dest∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="x∈(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p159" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="x∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))⇒x∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∃x0⦂ℤ·x ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p184" org.eventb.core.predicate="containers[{c}]⊆dom((dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="x ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="⊤∨(x=c∧x0=new_c∼(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))∧inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="dest∈dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i0∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(id ⦂ ℙ(Component×Component))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="i0∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i0∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p182" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="x ↦ x0∈({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀x⦂Component·x∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))⇒x∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p161" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p190" org.eventb.core.predicate="containers[{c}]⊆((containers[{inst2pat_c(dest)}]∪{inst2pat_c(dest)}) ∖ {c})∪{c}"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="¬x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p173" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p193" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))(i)∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="x∈(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p174" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p181" org.eventb.core.predicate="i∈dom(new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="c∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪{(inst2pat_c∪(ran(new_c) × {c}))(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ c_indexes(dest)∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧i∈ran(new_c)∧{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="x∈(ran(new_c) × {dest})[{c}]∨x∈(ran(new_c) × containers[{dest}])[{c}]∨x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))(i)=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p169" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p171" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧⊤∧{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p167" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="x∈(ran(new_c) × {dest})[{c}]∨x∈(ran(new_c) × containers[{dest}])[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p170" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="¬x∈(ran(new_c) × containers[{dest}])[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p194" org.eventb.core.predicate="c∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))∧(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))∧(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))∧(inst2pat_c∪(ran(new_c) × {c}))(i)∈dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="¬i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p172" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p189" org.eventb.core.predicate="containers[{c}]⊆((containers[{inst2pat_c(dest)}]∪(id ⦂ ℙ(Component×Component))[{inst2pat_c(dest)}]) ∖ {c})∪{c}"/>
<org.eventb.core.prPred name="p192" org.eventb.core.predicate="(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x∈(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x=(inst2pat_c∪(ran(new_c) × {c}))(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p180" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x=(inst2pat_c∪(ran(new_c) × {c}))(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬x∈(ran(new_c) × {dest})[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="c ↦ new_c∼(i)∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ)∧i∈dom({i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})∧{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="¬x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⇒x∈(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x=(inst2pat_c∪(ran(new_c) × {c}))(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p177" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))=(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="x0=new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="c∈ran(new_c)"/>
<org.eventb.core.prPred name="p164" org.eventb.core.predicate="i∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p191" org.eventb.core.predicate="(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p163" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p188" org.eventb.core.predicate="containers[{c}]⊆((containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}] ∖ {c})∪{c}"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="⊤∧inst2pat_c∪(ran(new_c) × {c})∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p166" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="i0∈ran(new_c)">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p176" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(c)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))=((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i))⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ c_indexes(dest)∨x ↦ x0∈{c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="i∉dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(id ⦂ ℙ(Component×Component))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p183" org.eventb.core.predicate="containers[{c}]⊆dom(c_indexes(dest){c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∪{(inst2pat_c∪(ran(new_c) × {c}))(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p178" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p157" org.eventb.core.predicate="i∉dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="¬x∈containers[{c}]">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="¬x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p185" org.eventb.core.predicate="containers[{c}]⊆dom(({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p175" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p187" org.eventb.core.predicate="containers[{c}]⊆(dom(c_indexes(dest)) ∖ {c})∪{c}"/>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="x∈containers[{inst2pat_c(dest)}]∪{inst2pat_c(dest)}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p158" org.eventb.core.predicate="containers[{c}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="c ↦ inst2pat_c(dest)∈container"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="c∈dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p179" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="i∈dom({i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p162" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="dom(c_indexes(dest))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]"/>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="c ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p156" org.eventb.core.predicate="containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬(x∈(ran(new_c) × {dest})[{c}]∨x∈(ran(new_c) × containers[{dest}])[{c}])">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ c_indexes(dest)∨(x=c∧x0=new_c∼(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="x∈containers[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × {dest})[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈(ran(new_c) × containers[{dest}])[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]∨x∈{(inst2pat_c∪(ran(new_c) × {c}))(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{(inst2pat_c∪(ran(new_c) × {c}))(i)}]⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="x∉{c}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p165" org.eventb.core.predicate="i∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="dest"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r26" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r25" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.disjToImplRewrites"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_indexes_cont/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,x,x0,i1,i,x1,i2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prRule name="r1" 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="p60"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p61"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i1,i2)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p63,p64,p65">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p67,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p68,p22,p23,p24,p25,p26,p27,p29,p58,p69,p70,p31,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p69,p70,p67"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p72,p73,p68,p39"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p67,p72,p73,p68,p39,p69,p70"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p69,p70"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p83">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i2=c" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p83">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p6,p83,p7,p10,p85,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p84,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p87">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p88">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p11,p59,p13,p14,p87,p15,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p88,p34,p35,p36,p37,p38,p39,p40,p41,p43,p64,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i1=c" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p90">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p63,p65"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p6,p7,p10,p11,p59,p13,p14,p87,p15,p89,p16,p17,p18,p19,p20,p21,p23,p24,p25,p91,p26,p27,p90,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p84,p64,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p94">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1∈dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p95">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p44,p96,p97,p98,p99,p100"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p44,p96,p97,p99,p100"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p102,p101,p105"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p15,p106,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p64,p93,p46,p95,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p109">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2∈dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=c_indexes(i2))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p110">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p114">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p114" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="p116">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p116,p43,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p116">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p116"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p116,p43,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p44,p96,p97,p98,p99,p100"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p97" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p100" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p44,p96,p97,p99,p100"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p105" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p102,p101,p105"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p122">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p122" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p124">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p124" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p127" org.eventb.core.prHyps="p125,p126">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p127" org.eventb.core.prHyps="p106,p63,p126,p125,p32,p5,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p128">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p128" org.eventb.core.prHyps="p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="p120,p128,p110,p129,p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p128,p7,p10,p94,p11,p59,p114,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p120,p43,p121,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p120,p128,p130,p110,p129,p121">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=c_indexes(i2)" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)=c_indexes(dest){c ↦ new_c∼(i1)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p132">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p128,p121">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p133">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p133" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p94">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p136">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p137">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p138">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p138" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p139">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p128,p7,p10,p94,p11,p59,p114,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p130,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p120,p43,p121,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p140"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p140" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p128,p7,p10,p94,p11,p59,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p130,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p120,p43,p121,p64,p141,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p119">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p128,p7,p10,p94,p11,p59,p13,p14,p87,p110,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p130,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p120,p43,p121,p64,p141,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p137,p118,p143,p119,p128,p144,p121">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p118,p119" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p128,p7,p10,p94,p11,p59,p119,p13,p14,p87,p110,p15,p109,p137,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p130,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p120,p43,p121,p64,p93,p46,p48,p50,p51,p52,p53,p54,p118,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p137,p118,p145,p143,p119,p128,p144,p121">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p118,p119" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p147"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)=c_indexes(dest){c ↦ new_c∼(i1)}" org.eventb.core.prGoal="p131" org.eventb.core.prHyps="p145">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p148">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p118,p119" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p152"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p154"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p156" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p157"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p149,p150,p155,p158"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p87,p89,p93,p94,p109,p110,p120,p128,p130,p121,p137,p118,p145,p119,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p145"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p130"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p161">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p15,p109,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p161,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p110"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p95"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p162">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p151" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p152"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p154"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p156" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p157"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p149,p150,p155,p158"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p106,p63,p32,p64,p89,p162,p65,p21">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p94"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p88"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p83"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p163">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p67,p72,p73,p68,p39,p69,p70"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p69,p70"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i1=c" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p90">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p63,p65"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p21,p23,p24,p25,p91,p26,p27,p90,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p84,p64,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p94">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p83">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i2=c" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p83">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p165">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p65"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p165" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p6,p83,p7,p10,p85,p94,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p84,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p87">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p88">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p15,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p88,p34,p35,p36,p37,p38,p39,p40,p41,p43,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p69,p70"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i2∈dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=c_indexes(i2))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p110">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p114">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p114" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="p116">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p166">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p116,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p116">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p116"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p116,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p121">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p121" org.eventb.core.prHyps="p106,p63,p32,p5,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p128">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p128" org.eventb.core.prHyps="p44"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="p129,p120,p121,p110,p128">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p130" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p120,p121,p128,p114,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p129,p120,p121,p110,p128,p130">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p155"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p150"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=c_indexes(i2)" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p130">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p167">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i1∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p94">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)=c_indexes(dest){c ↦ new_c∼(i1)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p132">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p132" org.eventb.core.prHyps="p128,p121">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p133">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p133" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p94">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p136">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p137">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p138">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p138" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p139">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p120,p121,p128,p130,p114">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p140"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p140" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p120,p121,p128,p130,p141,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p119">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p120,p121,p128,p130,p141,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p143,p137,p121,p118,p128,p144,p119">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p118,p119" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p21,p28,p5,p3,p32,p63,p64,p65,p1,p2,p4,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p23,p24,p25,p26,p27,p29,p58,p31,p33,p34,p35,p36,p37,p38,p40,p41,p43,p46,p48,p50,p51,p52,p53,p54,p55,p56,p57,p71,p75,p39,p93,p94,p87,p89,p110,p120,p121,p128,p130,p137,p118,p119,p42,p8,p155,p158,p159,p160,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p143,p137,p121,p118,p128,p144,p119,p145">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="p118,p119" org.eventb.core.prInfHyps="p146"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p146"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)=c_indexes(dest){c ↦ new_c∼(i1)}" org.eventb.core.prGoal="p167" org.eventb.core.prHyps="p145">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p168">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst i1,i2)" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p169">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p169" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p170">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p8,p44,p21,p155,p158,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p149" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p150" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p44,p149,p150"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p46">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p101"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p171"/>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p172"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p173">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p21"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p145"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p162">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p162" org.eventb.core.prHyps="p94" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p174" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p147"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p94"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p130"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p161">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p94,p11,p59,p13,p14,p87,p15,p89,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p161,p64,p93,p46,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p110"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p88"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p83"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p162">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p163" org.eventb.core.prHyps="p1,p2,p71,p3,p4,p5,p65,p6,p7,p10,p11,p59,p13,p14,p15,p16,p17,p18,p19,p20,p21,p63,p23,p24,p25,p26,p27,p28,p29,p58,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p43,p64,p93,p46,p162,p48,p50,p51,p52,p53,p54,p75,p55,p56,p57">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p94"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧dest∈dom(c_indexes)∧i1∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p170" org.eventb.core.predicate="i1∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧dest∈dom(c_indexes)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="i2=c">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="c_indexes(i2)⊆dom(c_indexes(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p164" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="i2∈dom(c_indexes)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="c_indexes(i2)⊆dom(c_indexes(i2)) ◁ (c_indexes(dest){c ↦ new_c∼(i1)})">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="¬i1∈dom(c_indexes)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p157" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p167" org.eventb.core.predicate="dom(c_indexes(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)⊆c_indexes(i2)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)=c_indexes(dest){c ↦ new_c∼(i1)}">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p156" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="i1=c">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="i1∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p174" org.eventb.core.predicate="¬⊤"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p173" org.eventb.core.predicate="c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p168" org.eventb.core.predicate="dom(c_indexes(i2)) ◁ (c_indexes(dest){c ↦ new_c∼(i1)})⊆c_indexes(i2)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p160" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p166" org.eventb.core.predicate="dest∈dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p165" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="i1∈dom(new_c∼)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p161" org.eventb.core.predicate="¬i2∈dom(c_indexes)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="i2∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="∀i⦂Component·¬i∈ran(new_c)"/>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="i1∈dom(c_indexes)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ)∧i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i2∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊤∧i∈ran(new_c)∧⊤"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧dest∈dom(c_indexes)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="i1 ↦ i2∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧⊤∧dest∈dom(c_indexes)∧⊤∧i1∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p159" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="i1 ↦ c∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ↔ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="i1∈ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i1∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬i2=c">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p169" org.eventb.core.predicate="i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="i1∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="¬i2∈ran(new_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p158" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="i1∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p172" org.eventb.core.predicate="i1 ↦ i2∈containers">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i2∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i1 ↦ i2∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="c ↦ i2∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=c_indexes(i2)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="i2∈ran(new_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ)∧i2∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧⊤∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p171" org.eventb.core.predicate="i2∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c∈dom(inst2pat_c∪(ran(new_c) × {c}))"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬i1=c">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p162" org.eventb.core.predicate="¬i1∈ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)⊆dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="i1∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i2∈dom(inst2pat_c∪(ran(new_c) × {c}))∧i1 ↦ i2∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)=dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="i1∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p163" org.eventb.core.predicate="dom((c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)) ◁ (c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i1)⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i2)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊥∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧⊥"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ),x1⦂ℙ(Component×ℤ)·x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="i1">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="i2">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_indexes_val/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0,x1,i,x2,x3,x4" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p54"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p59,p6,p7,p8,p9,p52,p10,p11,p12,p14,p13,p15,p16,p17,p60,p61,p18,p19,p20,p21,p22,p23,p25,p51,p62,p63,p26,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p62,p63,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p68,p61,p34"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p75,p38,p59,p67,p61,p34,p62"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p62,p76"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p78,p27,p57,p28,p74,p13,p5,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p79">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p75,p38,p59,p67,p61,p34,p62"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p62,p76"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p78,p27,p57,p28,p79">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p74"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p62,p63,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p67,p68,p61,p34"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="relational image with ∪ left in goal" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (containers[{i}]=∅)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p8,p9,p52,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p43,p44,p57,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p83">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with containers[{i}]=∅" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p83">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((ran(new_c) × {dest})[{i}]={dest})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p87">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p8,p9,p52,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p43,p44,p57,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p87">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (ran(new_c) × {dest})[{i}]={dest}" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p87">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((ran(new_c) × containers[{dest}])[{i}]=containers[{dest}])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p87,p8,p9,p52,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p43,p44,p57,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (ran(new_c) × containers[{dest}])[{i}]=containers[{dest}]" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p89">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p93">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p93" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p95"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x1·x ↦ x1∈(inst2pat_c∪(ran(new_c) × {c}))∼∧x1 ↦ x0∈({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p95" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p96,p97">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p96,p97"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse in hyp ((inst2pat_c∪(ran(new_c) × {c}))∼)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p98"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p98" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈inst2pat_c∼∪({c} × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p100"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p74">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p103">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p74">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p105">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p105" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p106">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p87,p8,p9,p52,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p101,p43,p44,p57,p97,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p109">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p75,p38,p59,p67,p61,p34,p62"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p62,p76"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x2,x3,x4)" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p113,p114">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p116"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p116" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p117"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p113" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p118"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p118"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p118" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p119"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x2 ↦ x3∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p117" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p120"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p120"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p120" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x2 ↦ x4∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p119" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p122"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p122"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x2 ↦ x3∈c_indexes∨(x2∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x3))" org.eventb.core.prHyps="p121">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p124">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="p124" org.eventb.core.prInfHyps="p125"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p125"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p78,p123,p57,p5,p124,p24,p25">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p126,p127">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="p126,p127" org.eventb.core.prInfHyps="p128"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p123" org.eventb.core.prHyps="p127" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p128"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x3" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p126">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p131" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p78,p57,p1,p5,p133,p24,p25,p127">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p134">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p38">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p87,p8,p9,p52,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p101,p43,p44,p57,p97,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p136">
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p38"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p137">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p87,p8,p9,p52,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p74,p37,p39,p41,p101,p43,p44,p57,p97,p45,p46,p47,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p106,p134,p138,p137,p136,p139,p109">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p138"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p139" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p27,p28,p106,p29,p30,p31,p32,p33,p35,p36,p74,p37,p109,p39,p41,p101,p43,p44,p57,p97,p45,p46,p47,p134,p70,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p106,p140,p134,p138,p137,p136,p139,p109">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p138"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p139" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p140">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p141">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x1 ↦ x0∈({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p142,p143"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p142,p143"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x1 ↦ x0∈c_index∪new_c∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p143" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p144"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p144"/>
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p135">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p25">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p145">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p145" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p14,p13,p15,p16,p17,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p106,p29,p30,p31,p32,p33,p35,p36,p142,p74,p37,p109,p39,p41,p101,p43,p44,p57,p45,p46,p140,p47,p134,p70,p48,p49,p50,p144">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p146">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_indexes(dest)=inst2pat_c∼;((containers∪id)[{dest}] ◁ c_index)" org.eventb.core.prGoal="p141" org.eventb.core.prHyps="p146">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p150">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p106" org.eventb.core.prInfHyps="p147"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p109" org.eventb.core.prInfHyps="p148"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p140" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p106,p109,p140"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p27,p106,p59,p140,p67,p68,p61,p34,p62,p63,p109"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p151"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p62,p63"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in goal" org.eventb.core.prGoal="p150" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p152">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p152" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p153">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p153" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p154">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p154" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p155">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (x1=i)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p156">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x1=i" org.eventb.core.prHyps="p156">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p101" org.eventb.core.prInfHyps="p157"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p144" org.eventb.core.prInfHyps="p159"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p142,p101,p144"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p157" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p158"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p160" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p161"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p156,p9,p52,p137,p84,p10,p11,p12,p146,p14,p13,p15,p16,p17,p147,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p30,p31,p32,p33,p34,p35,p36,p74,p37,p149,p109,p39,p41,p161,p43,p44,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50,p159">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p162">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x1 ↦ x0∈c_index∨x1 ↦ x0∈new_c∼)" org.eventb.core.prHyps="p144">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p163">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p144"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p164"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p164"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (x=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p165">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="p165">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p167">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="p165" org.eventb.core.prInfHyps="p166"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p167" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p169">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p166" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p168"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x=c" org.eventb.core.prGoal="p169" org.eventb.core.prHyps="p165">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p171">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p170"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p168"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p171" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p172">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p172" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p173">
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (c ↦ x1∈inst2pat_c∼∨x1∈ran(new_c))" org.eventb.core.prHyps="p170">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p174">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p170"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p170" org.eventb.core.prHyps="p174" org.eventb.core.prInfHyps="p175"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p175"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c ↦ x1∈inst2pat_c∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p174" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p176"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p176"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x1∈{dest}∪containers[{dest}]∪{i}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p177"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p177"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p177" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p178"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p178" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p179"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p179" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p180"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x1=dest∨x1∈containers[{dest}])" org.eventb.core.prHyps="p180">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p181">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p180" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p182"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with x1=dest" org.eventb.core.prHyps="p181">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p162" org.eventb.core.prInfHyps="p183"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p163" org.eventb.core.prInfHyps="p184"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p176" org.eventb.core.prInfHyps="p185"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p176,p162,p163"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prHyps="p26,p185,p3,p4,p24,p15">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p186">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p180"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p180" org.eventb.core.prHyps="p186" org.eventb.core.prInfHyps="p187"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p187"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c ↦ inst2pat_c(dest)∈container)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p188">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p188" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p135" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p162,p146,p14,p13,p15,p16,p17,p147,p163,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p30,p31,p32,p33,p34,p35,p36,p74,p37,p149,p165,p109,p176,p39,p41,p43,p44,p186,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p189">
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p189" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p190" org.eventb.core.prHyps="p189,p135">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p190" org.eventb.core.prHyps="p26,p3,p4,p135,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p189,p190,p135">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c ↦ inst2pat_c(x1)∈containers)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p191">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p191" org.eventb.core.prHyps="p189">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p192">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p192" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p193">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p193" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p162,p146,p14,p13,p15,p16,p17,p189,p147,p163,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p30,p31,p32,p33,p34,p35,p36,p74,p190,p135,p37,p149,p165,p109,p176,p39,p41,p43,p44,p186,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p194" org.eventb.core.prHyps="p193,p189">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p194" org.eventb.core.prHyps="p176,p28,p27,p1,p2,p3,p4,p13,p15,p30,p189,p186,p190,p135,p46,p37,p24">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p194,p193,p189">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p173" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p194,p87,p8,p9,p52,p137,p84,p10,p11,p12,p162,p146,p14,p13,p15,p16,p17,p189,p147,p163,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p30,p31,p32,p33,p34,p35,p36,p74,p190,p135,p37,p149,p165,p109,p176,p39,p193,p41,p43,p44,p186,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p194"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p190"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p195">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p170"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p168" org.eventb.core.prHyps="p195" org.eventb.core.prInfHyps="p196"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p170" org.eventb.core.prHyps="p195" org.eventb.core.prInfHyps="p197"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p196"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p197"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p173" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p162,p146,p14,p13,p15,p16,p17,p147,p163,p195,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p30,p31,p32,p33,p34,p35,p36,p142,p74,p37,p149,p165,p109,p39,p41,p43,p44,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p198">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="p198">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p200">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="p198" org.eventb.core.prInfHyps="p199"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p200" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p202">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p199" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p201"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p202" org.eventb.core.prHyps="p142,p1,p2,p4,p201,p162,p198,p163">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p165"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p203">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p144"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p144" org.eventb.core.prHyps="p203" org.eventb.core.prInfHyps="p204"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p204"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p136,p7,p87,p8,p9,p52,p137,p84,p10,p11,p12,p162,p146,p14,p13,p15,p16,p17,p147,p19,p20,p21,p22,p23,p89,p24,p25,p51,p26,p28,p27,p106,p29,p203,p30,p31,p32,p33,p34,p35,p36,p142,p74,p37,p149,p109,p39,p41,p101,p43,p44,p57,p45,p46,p140,p47,p134,p70,p48,p49,p148,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p156"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/>
</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.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p140"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p79">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p205"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p205" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p206"/>
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p206"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p74"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p89"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p87"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p83"/>
</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="0.1.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p79">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p27,p57,p28,p16,p5,p24,p25,p79">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p74"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p160" org.eventb.core.predicate="x ↦ i∈inst2pat_c∼∨(x=c∧⊤)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="x ↦ x0∈(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p194" org.eventb.core.predicate="c ↦ inst2pat_c(x1)∈containers">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;(((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))"/>
<org.eventb.core.prPred name="p178" org.eventb.core.predicate="x1=dest∨x1∈containers[{dest}]∨x1=i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="dest∈components[{Inst}]"/>
<org.eventb.core.prPred name="p171" org.eventb.core.predicate="c ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨x0=new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∨(⊤∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x4)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p188" org.eventb.core.predicate="dest∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p184" org.eventb.core.predicate="dest ↦ x0∈c_index">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p187" org.eventb.core.predicate="x1=dest∨⊤">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="∀x⦂Component,x0⦂ℤ·x ↦ x0∈(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))⇒x ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="x2 ↦ x3∈c_indexes">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;(((∅ ⦂ ℙ(Component))∪(ran(new_c) × {dest})[{i}]∪(ran(new_c) × containers[{dest}])[{i}]∪{i}) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p177" org.eventb.core.predicate="x1∈{dest}∨x1∈containers[{dest}]∨x1∈{i}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p185" org.eventb.core.predicate="dest ↦ c∈inst2pat_c"/>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="dest∈dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p179" org.eventb.core.predicate="x1=dest∨x1∈containers[{dest}]∨⊥">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p165" org.eventb.core.predicate="x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨x ↦ x1∈{c} × ran(new_c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∨(x2∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x4)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p206" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∪(ran(new_c) × {c})∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p180" org.eventb.core.predicate="x1=dest∨x1∈containers[{dest}]">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p161" org.eventb.core.predicate="x ↦ i∈inst2pat_c∼∨x=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∨(x2∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x3)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p186" org.eventb.core.predicate="x1∈containers[{dest}]">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;((containers[{i}]∪(ran(new_c) × {dest})[{i}]∪(ran(new_c) × containers[{dest}])[{i}]∪{i}) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="x ↦ x1∈(inst2pat_c∪(ran(new_c) × {c}))∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∨x2 ↦ x3∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="x ↦ x0∈(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x3">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p198" org.eventb.core.predicate="¬x=c">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;((containers[{i}]∪(ran(new_c) × {dest})[{i}]∪(ran(new_c) × containers[{dest}])[{i}]∪(id ⦂ ℙ(Component×Component))[{i}]) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="i∈dom(new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p192" org.eventb.core.predicate="x1∈dom(inst2pat_c)∧⊤">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∨x2 ↦ x4∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;(((ran(new_c) × {dest})[{i}]∪(ran(new_c) × containers[{dest}])[{i}]∪{i}) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p195" org.eventb.core.predicate="x1∈ran(new_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p157" org.eventb.core.predicate="x ↦ i∈inst2pat_c∼∨(x=c∧i∈ran(new_c))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="⊤∨(x2∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x3)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="x2 ↦ x3∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x2 ↦ x4∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x3=x4">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p197" org.eventb.core.predicate="c ↦ x1∈inst2pat_c∼∨⊤">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p181" org.eventb.core.predicate="x1=dest">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∪({c} × ran(new_c))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p172" org.eventb.core.predicate="(c∉{c}∧c ↦ x0∈inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨x0=new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p182" org.eventb.core.predicate="⊤∨x1∈containers[{dest}]">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x4">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p202" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="¬i∈dom(containers)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p162" org.eventb.core.predicate="¬x1=i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="c_indexes(dest)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)"/>
<org.eventb.core.prPred name="p199" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨(⊥∧x1∈ran(new_c))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪(ran(new_c) × containers[{dest}])[{i}]∪{i}) ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="x1 ↦ x0∈c_index∪new_c∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p189" org.eventb.core.predicate="inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="x ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p173" org.eventb.core.predicate="x0=new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="i∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="x ↦ x0∈(inst2pat_c∪(ran(new_c) × {c}))∼;(({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼))⇒x ↦ x0∈(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p196" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨⊤">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p205" org.eventb.core.predicate="¬⊤"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ new_c∼(i)}})(i)=(inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨(x=c∧x0=new_c∼(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p176" org.eventb.core.predicate="x1 ↦ c∈inst2pat_c">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))⊆(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="x ↦ x0∈(dom({c ↦ new_c∼(i)}) ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)))∪{c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p167" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨(⊤∧x0=new_c∼(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p159" org.eventb.core.predicate="i ↦ x0∈c_index∨i ↦ x0∈new_c∼">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p169" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨x0=new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p164" org.eventb.core.predicate="⊤∨x1 ↦ x0∈new_c∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p191" org.eventb.core.predicate="x1∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="(ran(new_c) × {dest})[{i}]={dest}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ↔ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p156" org.eventb.core.predicate="x1=i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p174" org.eventb.core.predicate="c ↦ x1∈inst2pat_c∼">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨x ↦ x0∈{c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p175" org.eventb.core.predicate="⊤∨x1∈ran(new_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="x2 ↦ x4∈c_indexes∨⊥">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p200" org.eventb.core.predicate="x ↦ x0∈{c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index))∨(⊥∧x0=new_c∼(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x2)}=x4">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p163" org.eventb.core.predicate="x1 ↦ x0∈c_index">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p158" org.eventb.core.predicate="i∈{dest}∪containers[{dest}]∪{i}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="∃x1⦂Component·x ↦ x1∈(inst2pat_c∪(ran(new_c) × {c}))∼∧x1 ↦ x0∈({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="x3=x4">
<org.eventb.core.prIdent name="x3" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="(ran(new_c) × containers[{dest}])[{i}]=containers[{dest}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="x ↦ x0∈c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p168" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨x1∈ran(new_c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="containers[{i}]=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p203" org.eventb.core.predicate="x1 ↦ x0∈new_c∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p183" org.eventb.core.predicate="¬dest=i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p201" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="x1∈{dest}∪containers[{dest}]∪{i}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p190" org.eventb.core.predicate="c ↦ inst2pat_c(dest)∈container"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="x ↦ x0∈({c} ⩤ (inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{dest}] ◁ c_index)))∪{c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c∪(ran(new_c) × {c}))⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=(inst2pat_c∪(ran(new_c) × {c}))∼;((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ (c_index∪new_c∼))"/>
<org.eventb.core.prPred name="p170" org.eventb.core.predicate="c ↦ x1∈inst2pat_c∼∨x1∈ran(new_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p193" org.eventb.core.predicate="x1∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p204" org.eventb.core.predicate="x1 ↦ x0∈c_index∨⊤">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨(x=c∧x1∈ran(new_c))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="x1 ↦ x0∈({dest}∪containers[{dest}]∪{i}) ◁ (c_index∪new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p166" org.eventb.core.predicate="x ↦ x1∈inst2pat_c∼∨(⊤∧x1∈ran(new_c))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ),x1⦂ℙ(Component×ℤ)·x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1"/>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="x2 ↦ x4∈c_indexes">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="x1 ↦ x0∈c_index∨x1 ↦ x0∈new_c∼">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="i∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="x2∈ran(new_c)">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="dest"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r25" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/c_indexes/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prRule name="r1" 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="p54"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p60,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p15,p16,p17,p61,p62,p18,p19,p20,p21,p22,p23,p25,p51,p63,p64,p26,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p39,p41,p43,p44,p45,p46,p47,p48,p49,p50"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p63,p64,p60"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p66,p67,p62,p34"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="p1,p2,p65,p3,p4,p5,p6,p7,p8,p9,p52,p10,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p22,p23,p24,p25,p51,p26,p27,p28,p29,p30,p31,p32,p33,p35,p36,p57,p37,p39,p41,p43,p44,p45,p46,p47,p69,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p38"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p57">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p57"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p27,p57,p24,p3,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/c_indexes_dom/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p36" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p54" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p56" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p66">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24,p25,p2,p3,p68,p26,p27,p4,p28,p29,p5,p30,p31,p32,p33,p6,p34,p7,p53,p9,p10,p11,p13,p14,p15,p16,p17,p35,p69,p38,p70,p40,p41,p18,p19,p42,p43,p45,p20,p21,p22,p48,p23,p49,p50,p71,p72"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p71,p72,p68"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p35">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p75" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p74,p75,p70,p31"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p1,p2,p73,p3,p4,p5,p6,p7,p53,p8,p9,p10,p11,p12,p13,p14,p66,p15,p16,p17,p19,p20,p21,p22,p23,p50,p24,p25,p26,p27,p28,p29,p30,p32,p33,p34,p35,p37,p38,p40,p41,p42,p43,p44,p45,p46,p77,p47,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="dom(c_indexes(i))=(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/c_indexes_cont/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i1,i2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i1,i2)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p54,p55,p56">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p58,p6,p7,p8,p9,p11,p10,p12,p13,p14,p15,p16,p18,p17,p50,p20,p21,p22,p24,p25,p26,p27,p28,p29,p33,p59,p36,p37,p35,p38,p39,p40,p41,p42,p43,p44,p46,p47,p48,p49,p60,p61"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p17">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p60,p61,p58"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p29">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p63,p64,p59,p13"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p3,p4,p62,p5,p54,p8,p10,p16,p17,p50,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p31,p38,p42,p43,p44,p47,p49,p1,p2,p6,p7,p9,p11,p12,p14,p15,p56,p18,p55,p29,p32,p33,p36,p37,p39,p40,p41,p66,p45,p46,p48">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="i1∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i1 ↦ i2∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="i2∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/c_indexes_val/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i)" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p2,p12,p44,p45,p46,p47,p48,p49,p50,p51,p3,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p6,p66,p8,p67,p68"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p67,p68,p31"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p3">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p70,p71,p54,p39"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p5,p6,p25,p4">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;(((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_indexes(i)=inst2pat_c∼;((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo(c)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈P∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="todo∈P → ℙ(P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈components[{Pat}]∧m∈todo(c)⇒dom(m)⊆containers[{c}]∪{c}">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) → (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="todo∈components[{Pat}] → ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(Component×ℙ(ℙ(Component×ℤ)))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/cl_left/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p62"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p8,p60,p9,p57,p11,p12,p13,p59,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p58,p32,p33,p61,p34,p35,p36,p37,p39,p40,p43,p45,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p61,p60"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p65"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p66,p8,p9,p57,p10,p11,p12,p13,p59,p69,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p58,p32,p33,p34,p36,p37,p38,p67,p39,p41,p43,p45,p47,p48,p49,p50,p51,p52,p53,p68,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components)⇒finite(inst_components[{pc}])"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Inst}] ⩤ containers⊆components[{Inst}] ⩤ container;((components[{Inst}] ⩤ containers)∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/cl_left/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" 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="p21"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p22"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p1,p5,p4,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1,p5,p4,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p25">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1,p5,p4,p3,p2">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))∧ran(new_c) × {dest}⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))∧ran(new_c) × containers[{dest}]⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])⊆(container∪(ran(new_c) × {dest}));((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="containers⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ran(new_c) × containers[{dest}]⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="ran(new_c) × {dest}⊆(container∪(ran(new_c) × {dest}));(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/cl_left/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,x,x0,x1,x2,x3,x4" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p40,p15,p54,p56,p10,p57,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p49" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ⊆ in goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0)" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p75">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈new_components∼;containers;(new_components∪inst_components);(containers∪id)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p75" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p77"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x1,x2,x3·x ↦ x1∈new_components∼∧x1 ↦ x2∈containers∧x2 ↦ x3∈new_components∪inst_components∧x3 ↦ x0∈containers∪id)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78,p79,p80,p81">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p78,p79,p80,p81"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈new_components∼" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p82"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (x1 ↦ x2∈container;(containers∪id))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="p40,p15,p54,p56,p10,p81,p78,p57,p47,p80,p82">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p85">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x1 ↦ x2∈container;(containers∪id)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p85" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃x·x1 ↦ x∈container∧x ↦ x2∈containers∪id)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p86" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p87,p88">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p87,p88"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (x4∈dom(inst_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ goal (inst inst_components(x4))" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p89">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p57"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p89,p92">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p15,p87,p47,p82,p40,p88,p54,p56,p89,p10,p81,p92,p78,p57,p80">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p62,p6,p8,p66,p9,p63,p11,p12,p13,p65,p16,p17,p18,p19,p20,p21,p22,p23,p25,p26,p28,p61,p30,p31,p32,p33,p64,p34,p35,p67,p36,p37,p38,p39,p41,p43,p45,p48,p50,p51,p53,p52,p55,p58,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p97">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p97"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p37,p62"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p67,p66,p99"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p40,p14,p88,p52,p89,p81,p24,p57,p47,p80">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p105">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (x4∈dom(new_components))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p106">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p62,p6,p8,p66,p9,p63,p11,p12,p13,p65,p16,p17,p18,p19,p20,p21,p22,p23,p25,p26,p28,p61,p30,p31,p32,p33,p64,p34,p35,p67,p36,p37,p38,p39,p41,p43,p45,p48,p50,p51,p53,p52,p55,p58,p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p97">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p97"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p43,p37,p62"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p67,p66,p99"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p106" org.eventb.core.prHyps="p1,p2,p97,p3,p87,p4,p5,p6,p102,p8,p9,p63,p10,p11,p12,p80,p13,p65,p104,p15,p16,p17,p18,p19,p20,p22,p88,p23,p25,p26,p28,p61,p30,p31,p32,p33,p64,p34,p35,p36,p38,p39,p40,p103,p41,p81,p78,p105,p45,p47,p48,p82,p50,p51,p53,p52,p54,p55,p56,p98,p57,p58,p59,p101">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p106">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ goal (inst new_components(x4))" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p107">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p106">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p108">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="p47"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="p106,p109">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p110" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p105,p15,p87,p47,p82,p109,p40,p88,p54,p56,p10,p81,p78,p57,p80,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p112">
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p105,p15,p87,p47,p82,p109,p40,p88,p54,p56,p10,p81,p78,p57,p80,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p106"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p89"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p85"/>
</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.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="x1 ↦ x4∈container">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="x ↦ new_components(x4)∈container∪(new_components∼;container;(inst_components∪new_components))∧new_components(x4) ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))⊆(container∪(new_components∼;container;(inst_components∪new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="x2 ↦ x3∈new_components∪inst_components">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="x4 ↦ x2∈containers∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="dom(inst_components) ◁ containers;inst_components⊆inst_components;containers"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="x ↦ inst_components(x4)∈container∪(new_components∼;container;(inst_components∪new_components))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∃x⦂Component·x1 ↦ x∈container∧x ↦ x2∈containers∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))⊆(container∪(new_components∼;container;(inst_components∪new_components)));((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="x1 ↦ x2∈container;(containers∪(id ⦂ ℙ(Component×Component)))">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="new_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="x4∈dom(inst_components)">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="x1 ↦ x2∈containers">
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x2" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬x4∈dom(inst_components)">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="inst_components(x4) ↦ x0∈containers∨inst_components(x4) ↦ x0∈new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))∨inst_components(x4) ↦ x0∈(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="x1 ↦ x∈new_components">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="⊤∧inst_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∃x1⦂Component·x ↦ x1∈container∪(new_components∼;container;(inst_components∪new_components))∧x1 ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="x ↦ x0∈(container∪(new_components∼;container;(inst_components∪new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀x⦂Component,x0⦂Component·x ↦ x0∈new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))⇒x ↦ x0∈(container∪(new_components∼;container;(inst_components∪new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="⊤∧new_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="x4∈dom(new_components)∧new_components∈Component ⇸ Component">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="x ↦ x1∈new_components∼">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="new_components(x4) ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))⊆(container∪(new_components∼;container;(inst_components∪new_components)));((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="inst_components(x4) ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="containers⊆(container∪(new_components∼;container;(inst_components∪new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="x ↦ inst_components(x4)∈container∪(new_components∼;container;(inst_components∪new_components))∧inst_components(x4) ↦ x0∈containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="x3 ↦ x0∈containers∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x3" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="x4∈dom(new_components)">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="x ↦ new_components(x4)∈container∪(new_components∼;container;(inst_components∪new_components))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="x ↦ x0∈new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))⇒x ↦ x0∈(container∪(new_components∼;container;(inst_components∪new_components)));(containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component))))∪(id ⦂ ℙ(Component×Component)))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="x ↦ x0∈new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∃x1⦂Component,x2⦂Component,x3⦂Component·x ↦ x1∈new_components∼∧x1 ↦ x2∈containers∧x2 ↦ x3∈new_components∪inst_components∧x3 ↦ x0∈containers∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="inst_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="containers⊆(container∪(new_components∼;container;(inst_components∪new_components)));((containers∪(new_components∼;containers;(new_components∪inst_components);(containers∪(id ⦂ ℙ(Component×Component)))))∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="x4∈dom(inst_components)∧inst_components∈Component ⇸ Component">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="new_components(x4)">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="inst_components(x4)">
<org.eventb.core.prIdent name="x4" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.ri"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.exI"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/todo_pre/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="p,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prRule name="r1" 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="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m,p)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p9,p10">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))∧p∈dom(m)⇒(P ◁ containers ▷ P)[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="(P ◁ containers ▷ P)[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult)))∧p∈dom(m)⇒(P ◁ containers ▷ P)[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="m∈(⋃c⦂Component·c∈P ∣ ((containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}] → 1 ‥ max(ran(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="p∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/todo_pre/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="p,b,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prRule name="r1" 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="p59"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m,p)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p62,p63">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p25,p26,p28,p57,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p65,p45,p47,p49,p50,p51,p52,p53,p54,p55,p56"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p44,p41,p65,p43,p26,p62"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p45">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p69,p72,p37,p68"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p7,p8,p9,p58,p70,p10,p11,p75,p12,p74,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p25,p27,p28,p57,p63,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p40,p42,p67,p76,p45,p47,p49,p50,p51,p52,p53,p73,p54,p55,p56">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}∧p∈dom(m)⇒(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}∧p∈dom(m)⇒(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="p∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ max(ran(c_multiplicity)) ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ c_indexes(dest){c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/todo_pre/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="p,b,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prRule name="r1" 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="p57"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m,p)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p60,p61">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p56,p9,p10,p11,p13,p14,p15,p16,p17,p18,p19,p20,p22,p23,p24,p25,p26,p55,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p63,p42,p45,p47,p48,p49,p50,p51,p53,p54"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p41,p38,p63,p40,p25"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p66,p69,p34,p65"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p1,p2,p64,p3,p4,p5,p6,p7,p56,p8,p67,p9,p10,p72,p11,p71,p12,p13,p14,p15,p16,p17,p18,p20,p21,p22,p23,p24,p26,p55,p60,p27,p28,p29,p30,p31,p32,p33,p35,p36,p37,p39,p73,p42,p44,p45,p47,p48,p61,p49,p50,p51,p70,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="todo∈ℙ(components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="p∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="todo∈ℙ(P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i)∪{c ↦ k}∈todo"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈todo⇒m∈todo"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="m∈todo">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="m∈todo∧p∈dom(m)⇒(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/todo_pre/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="p,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prRule name="r1" 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="p10"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m,p)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p13,p14">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p3,p5,p4,p2,p1,p13,p14">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="ℙ(ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}∧p∈dom(m)⇒containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers[{p}]⊆dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂ℙ(Component×ℤ),p⦂Component·m∈todo ∖ {k⦂ℤ·k∈1 ‥ M ∣ {c ↦ k}}∧p∈dom(m)⇒containers[{p}]⊆dom(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="p∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="p" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_mul/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" 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="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p10,p12,p7,p3,p20,p16,p5,p17,p14,p2,p18,p9,p6,p19,p4,p13,p15,p11,p21,p1,p8,p23,p22,p29">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈to_unfold_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c∈dom(c_multiplicity)∧c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_mul/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prRule name="r1" 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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult=c_mult_others{pc·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p22">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p24"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p2,p3,p5,p4,p19,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</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="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈(components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}]⇒c_mult(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬c∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_mult(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c_mult_others(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)(c)&gt;0">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈(components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c∈dom(inst_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·c∈(components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}]⇒c_mult(c)&gt;0"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬c∈dom(inst_components)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_mul/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p1,p5,p4,p3,p2,p23">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·c0∈to_unfold_c ∖ {c}⇒c_multiplicity(c0)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}⇒c_multiplicity(c0)&gt;0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_index/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,i,k" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prRule name="r1" 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="p56"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p57"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i,k)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p58">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p59,p60">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p59,p55"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p33,p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p38,p8,p55,p51,p59,p23,p49,p50,p33,p63"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p68"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p1,p2,p68,p3,p4,p5,p6,p64,p8,p55,p9,p51,p59,p65,p10,p11,p12,p60,p67,p13,p14,p15,p16,p17,p69,p19,p20,p21,p22,p23,p24,p50,p26,p27,p28,p29,p52,p30,p31,p32,p33,p34,p35,p36,p37,p39,p41,p63,p43,p44,p45,p46,p47,p66,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p70">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_index/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="c,s,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p15,p16,p17,p18,p19">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p1">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p22"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p23"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p24"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p21,p8,p10,p17"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p27"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p30"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p15,p26,p22,p18"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p21,p18,p10,p17,p26,p22,p31,p32,p8,p6,p15,p33,p34,p4"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p35">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p35"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p36"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p21"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="s ↦ c∈containers">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)">
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_index/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈(components[{Pat}] ∖ dom(container)) ∖ c_multiplicity∼[{0}]∧k∈1 ‥ max(ran(c_mult))⇒{c ↦ k}∉ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_index/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈(∅ ⦂ ℙ(Component×Component))∧k∈1 ‥ max(ran(c_mult))⇒(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i){c ↦ k}∉ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_index/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,k)" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p17,p18"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c ∖ {c}∧k∈1 ‥ M⇒{c0 ↦ k}∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c ∖ {c}∧k∈1 ‥ M⇒¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}∧k∈1 ‥ M⇒¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_index/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="i,k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,k)" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p17,p18"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i){c0 ↦ k}∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_index/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i,k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,k)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p66,p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p69">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c0,k)" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p66,p67">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in {c0 ↦ k}∈ran(c_indexes)∪{i·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p77"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p77" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃i·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}={c0 ↦ k})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80,p81">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80,p81"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in hyp (c_indexes(dest){c ↦ new_c∼(i)}={c0 ↦ k})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p80" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82,p83"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p82,p83"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c≠c0)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p85">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p85" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p87">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=c0" org.eventb.core.prHyps="p87">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p31,p82,p27,p5,p84"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p8,p9,p58,p82,p10,p57,p11,p12,p13,p84,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p31,p61,p32,p33,p34,p35,p59,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p93"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c=c0" org.eventb.core.prHyps="p87">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p94"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p95"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p96"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p97"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p98"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p96" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p99" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p99,p37,p96"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p1,p2,p93,p3,p4,p5,p89,p6,p7,p90,p8,p97,p9,p82,p10,p57,p95,p11,p12,p13,p84,p101,p14,p15,p16,p17,p18,p19,p67,p21,p22,p23,p24,p25,p26,p27,p56,p91,p29,p30,p31,p94,p87,p32,p33,p34,p35,p36,p38,p39,p40,p81,p98,p41,p76,p44,p88,p46,p92,p48,p49,p50,p51,p52,p100,p53,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p85">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p85" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p81,p82,p86,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p85"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c0) ↣ Component ∖ ran(components)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c0 ↦ k∈c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="c_indexes(dest){c0 ↦ new_c∼(i)}⊆{c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c∧k∈1 ‥ M⇒{c0 ↦ k}∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="c0∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="c=c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="{c0 ↦ k}∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="c≠c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}={c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="¬{c0 ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="c0 ↦ dest∈to_unfold_c_in">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="c0∈to_unfold_c∧k∈1 ‥ M">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}={c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c0)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="{c0 ↦ k}⊆c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}⊆{c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c0∈to_unfold_c∧k∈1 ‥ M⇒¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="⊥∨{c0 ↦ k}∈{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="{c0 ↦ k}∈ran(c_indexes)∨{c0 ↦ k}∈{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="{c0 ↦ k}∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬c=c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component,k⦂ℤ·c0∈to_unfold_c∧k∈1 ‥ M⇒¬{c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="c0 ↦ k∈c_indexes(dest){c0 ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="k">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_index/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="b,i,k,c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,k)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p66,p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p69">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p71"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=c" org.eventb.core.prHyps="p76">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p72,p74"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p74,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p72,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p70" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p7,p74,p8,p83,p9,p10,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p72,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p40,p80,p41,p44,p46,p78,p48,p49,p50,p51,p52,p85,p53,p54,p76,p77,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p88">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p89">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (i∉dom(c_indexes))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p74,p7,p8,p83,p9,p10,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p31,p32,p33,p34,p35,p36,p38,p39,p40,p89,p80,p41,p92,p44,p46,p88,p48,p49,p50,p51,p52,p85,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p90">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p93"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p91" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p92"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p89">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p100">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p100" org.eventb.core.prHyps="p30,p89,p3,p5,p92,p66,p26,p59,p74,p93,p88">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p101">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p86,p3,p27,p5,p88">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p102">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p102" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p74,p7,p8,p83,p9,p10,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p31,p32,p33,p34,p93,p35,p36,p38,p39,p40,p89,p80,p41,p92,p44,p46,p88,p48,p49,p50,p51,p52,p85,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p103">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p103" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p104">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p74,p7,p8,p83,p9,p10,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p31,p32,p33,p34,p93,p35,p36,p38,p39,p40,p89,p80,p41,p92,p44,p46,p88,p48,p49,p50,p51,p52,p85,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p98,p102,p105,p104,p103,p106,p101">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p107" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p103,p74,p7,p8,p83,p9,p10,p104,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p98,p31,p32,p33,p34,p93,p35,p36,p38,p39,p40,p89,p80,p41,p101,p92,p44,p46,p88,p48,p49,p50,p51,p52,p102,p85,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p98,p107,p102,p105,p104,p103,p106,p101">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prHyps="p107">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p107"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∪{i·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p108" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p109"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p109" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p110"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∨(∃i0·i0∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}))" org.eventb.core.prHyps="p110">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p111">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p110"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="p111" org.eventb.core.prInfHyps="p112"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p112"/>
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,dest,new_c∼(i))" org.eventb.core.prHyps="p59">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p113" org.eventb.core.prHyps="p104">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p114">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p114" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p89"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p113" org.eventb.core.prUnsel="p113">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="p26">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p116">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p113" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p74,p8,p9,p58,p10,p57,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p27,p56,p29,p31,p61,p32,p33,p34,p35,p59,p36,p37,p38,p39,p40,p41,p42,p44,p46,p48,p49,p50,p51,p107,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p79"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="p10">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p66,p42,p61,p58,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p84" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p84,p37,p82"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p79,p3,p4,p5,p6,p103,p7,p74,p8,p83,p9,p10,p104,p57,p81,p11,p12,p13,p86,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p26,p27,p56,p29,p30,p98,p31,p111,p32,p33,p34,p93,p35,p36,p38,p39,p40,p89,p80,p41,p101,p92,p44,p46,p88,p48,p49,p50,p51,p107,p52,p102,p85,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p113,p119" org.eventb.core.prUnsel="p113">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p113" org.eventb.core.prHyps="p104" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p120" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p125"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p126">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p110"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="p126" org.eventb.core.prInfHyps="p127"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p127"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃i0·i0∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p126" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p128,p129">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p128,p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p120" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p125"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p107"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p90"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p130">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="p130" org.eventb.core.prInfHyps="p131"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p131" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p120" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p124" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p125"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p89"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p76"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="⊤∧new_c∼(i)∈1 ‥ M">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊤)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="new_c∼(i)∈1 ‥ M">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="i∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ max(ran(c_multiplicity))∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧¬(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∈ran(c_indexes)⇒¬m∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="i0∈ran(new_c)">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="i∈dom(new_c∼)∧⊤">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∨⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="i∉dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒¬(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in∧new_c∼(i)∈1 ‥ M">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="i∈dom(new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="new_c∼(i)∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧i∈ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,k⦂ℤ·c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧k∈1 ‥ M⇒(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="∃i0⦂Component·i0∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i){c0 ↦ k}∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="⊤∨(∃i0⦂Component·i0∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∨c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊥)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨c0 ↦ i∈(container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="¬c_indexes(dest){c ↦ new_c∼(i)}∈ran(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="¬i=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(c){c0 ↦ k}∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧m∈(containers∪(id ⦂ ℙ(Component×Component)))[{s}] → 1 ‥ M∧(containers∪(id ⦂ ℙ(Component×Component)))[{c}] ◁ m∉ran(c_indexes)⇒m∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c0 ↦ c∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧c∈ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k}∈ran(c_indexes)∨(∃i0⦂Component·i0∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){c ↦ new_c∼(i)}{c0 ↦ k})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="i∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="new_c∼(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="dest"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/ext_index/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈P ◁ containers ▷ P∧e∈Component ⇸ 1 ‥ max(ran(c_mult))∧m∈Component ⇸ 1 ‥ max(ran(c_mult))∧dom(m)⊆((P ◁ containers ▷ P)∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))∧s∈dom(e)⇒e∉ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/ext_index/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,e,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,s,m,e)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p15,p16,p17,p18,p19,p20,p21,p22"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="s∈P∧c0∈P∧s ↦ c0∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c0}]∧¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧s∈dom(e)⇒¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="s∈dom(e)">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="m∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="s ↦ c0∈containers">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c0}]∧m∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧s∈dom(e)⇒e∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c0}]∧¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})∧s∈dom(e)⇒¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="e∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/ext_index/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="s,e,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prRule name="r1" 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="p12"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,s,m,e)" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p15,p16,p17,p18,p19,p20,p21,p22"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c0∈P">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="s∈dom(e)">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="m∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆((containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}]))∪(id ⦂ ℙ(Component×Component)))[{c0}]∧m∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧s∈dom(e)⇒e∉ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}]∧¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧s∈dom(e)⇒¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c0⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c0∈P∧s ↦ c0∈containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}]∧¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧s∈dom(e)⇒¬e∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="e∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="dom(m)⊆(containers∪(ran(new_c) × {dest})∪(ran(new_c) × containers[{dest}])∪(id ⦂ ℙ(Component×Component)))[{c0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/ext_index/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,s,e,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prRule name="r1" 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="p61"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p62"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,m,e)" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p64,p65,p66,p67,p68,p69,p70,p71">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24,p7,p54,p32,p35,p4,p29,p10,p48,p30,p49,p37,p14,p23,p31,p18,p52,p16,p36,p46,p5,p25,p27,p44,p12,p11,p6,p33,p15,p21,p1,p50,p47,p38,p22,p3,p8,p20,p41,p34,p39,p2,p19,p28,p17,p55,p56,p57,p58"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p39" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="DESELECT6" org.eventb.core.prHyps="p59,p68,p71,p39,p57,p58"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p41">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="DESELECT5" org.eventb.core.prHyps="p64,p65,p34,p74,p77"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,s,m,e)" org.eventb.core.prHyps="p83">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p85">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p85" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p86">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p81,p80,p76,p67,p70,p75">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p87">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p87" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p88">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p51,p43,p9,p13,p66,p67,p69,p70,p24,p7,p54,p32,p35,p4,p29,p10,p48,p30,p49,p37,p14,p23,p31,p18,p52,p16,p36,p46,p5,p25,p27,p44,p12,p11,p6,p33,p15,p21,p1,p50,p47,p38,p22,p3,p8,p41,p2,p19,p28,p17,p55,p56,p73,p75,p76,p78,p79,p80,p81,p82,p84">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p90">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p51,p43,p9,p13,p66,p67,p69,p70,p24,p7,p54,p32,p35,p4,p29,p10,p48,p30,p49,p37,p14,p23,p31,p18,p52,p16,p36,p46,p5,p25,p27,p44,p12,p11,p6,p33,p15,p21,p1,p50,p47,p38,p22,p3,p8,p41,p2,p19,p28,p17,p55,p56,p73,p75,p76,p78,p79,p80,p81,p82,p84">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p72">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p83"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p72"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2,e3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧m∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="s∈P∧c∈P∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="⊤∧⊤∧s ↦ c∈containers∧⊤∧⊤∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬⊥∧⊤">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="¬m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="s ↦ c∈containers">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="s∈dom(e)">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="¬e∈ran(c_indexes)">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="m∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="e∈Component ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="s ↦ c∈containers∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="s∈components[{Pat}]">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="m∈Component ⇸ 1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="e∈Component ⇸ 1 ‥ M">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="c∈components[{Pat}]">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆((containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧m∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="s∈components[{Pat}]∧c∈components[{Pat}]∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧m∈Component ⇸ 1 ‥ max(ran(c_multiplicity))∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c∈P">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component)))[{c}]∧¬m∈ran(c_indexes)∧s∈dom(e)⇒¬e∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="s∈P">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component,s⦂Component,m⦂ℙ(Component×ℤ),e⦂ℙ(Component×ℤ)·s∈P∧c∈P∧s ↦ c∈containers∧e∈Component ⇸ 1 ‥ M∧m∈Component ⇸ 1 ‥ M∧dom(m)⊆(containers∪(id ⦂ ℙ(Component×Component)))[{c}]∧m∉ran(c_indexes)∧s∈dom(e)⇒e∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="s">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="e">
<org.eventb.core.prIdent name="e" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈(components[{Pat}] ∖ dom(container)) ∖ c_mult∼[{0}]∧m∈ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,m)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p66,p67">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈to_unfold_c ∖ {c}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69,p70"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69,p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p56,p12,p13,p14,p15,p16,p17,p18,p20,p74,p59,p21,p22,p23,p24,p25,p26,p27,p55,p29,p31,p32,p33,p34,p35,p61,p36,p37,p38,p39,p75,p40,p41,p43,p45,p47,p48,p49,p50,p51,p52,p53,p54"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p76"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p61,p60"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p37,p77"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p68" org.eventb.core.prHyps="p1,p2,p76,p3,p4,p5,p6,p7,p8,p78,p10,p11,p56,p12,p13,p14,p81,p15,p16,p17,p18,p19,p20,p73,p70,p71,p22,p23,p24,p25,p26,p27,p55,p29,p30,p31,p32,p33,p57,p34,p35,p36,p38,p39,p79,p40,p43,p45,p47,p48,p49,p50,p51,p80,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="m∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="m∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈to_unfold_c ∖ {c}∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒¬c0∈dom(m)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c0∈to_unfold_c ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈to_unfold_c ∖ {c}∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒c0∉dom(m)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬c0∈{c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prRule name="r1" 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="p61"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p62"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,m)" org.eventb.core.prGoal="p60" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p64,p65">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p65" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p67"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in m∈ran(c_indexes)∪{i·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (m∈ran(c_indexes)∨(∃i·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m))" org.eventb.core.prHyps="p70">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p71">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p30,p3,p5,p71,p59,p64,p26">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p74"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p74"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃i·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75,p76">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75,p76"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ new_c∼(i)}=m" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p76">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p78">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p80" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p81">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p81">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p78,p64"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p57,p11,p56,p12,p13,p14,p15,p16,p17,p18,p19,p84,p64,p20,p21,p22,p23,p24,p25,p27,p55,p29,p31,p32,p33,p34,p35,p58,p36,p37,p38,p39,p85,p40,p41,p43,p45,p47,p48,p78,p49,p50,p51,p52,p53,p54"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p58,p57"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p37,p87"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p83,p7,p8,p88,p10,p11,p56,p12,p13,p81,p14,p91,p76,p15,p16,p17,p18,p82,p19,p64,p21,p22,p23,p24,p25,p26,p27,p55,p29,p30,p31,p32,p33,p59,p34,p35,p36,p38,p39,p75,p89,p40,p43,p45,p47,p48,p78,p49,p50,p51,p90,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p92">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c0∈dom(c_indexes(dest)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p57,p11,p56,p12,p13,p14,p15,p16,p17,p18,p19,p84,p20,p21,p22,p23,p24,p25,p27,p55,p29,p31,p32,p33,p34,p35,p58,p36,p37,p38,p39,p85,p40,p41,p43,p45,p47,p48,p49,p50,p51,p52,p53,p54"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p41" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p41,p58,p57"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p43">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p37" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p37,p87"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p8,p88,p10,p11,p56,p12,p13,p14,p91,p76,p15,p16,p17,p18,p19,p64,p92,p21,p22,p23,p24,p25,p26,p27,p55,p29,p30,p31,p32,p33,p59,p34,p35,p36,p38,p39,p75,p89,p40,p43,p45,p47,p48,p78,p49,p50,p51,p90,p52,p53,p54">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p95">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p41"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p94,p95">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p30,p78,p75,p76,p3,p5,p94,p59,p95,p64,p26,p92">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p96,p94,p95">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p30,p76,p3,p5,p59,p95,p64,p92,p78,p75,p94,p26,p96">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p96"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p81"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="c∈dom(c_indexes(dest){c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="m∈ran(c_indexes)∨m∈{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈to_unfold_c∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒¬c0∈dom(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}=m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c0∈to_unfold_c∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="m∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="c0∈dom(c_indexes(dest))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="m∈ran(c_indexes)∨⊤">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬c0∈dom(c_indexes(dest){c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c0∈to_unfold_c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="m∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="m∈ran(c_indexes)∨(∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,m⦂ℙ(Component×ℤ)·c0∈to_unfold_c∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒c0∉dom(m)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="c0∈dom(c_indexes(dest){c ↦ new_c∼(i)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="⊤∨(∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_index_ext/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,i" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p32" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p54">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p13" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p13,p57"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p35,p25,p18,p49,p44,p47,p48,p13,p57"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p35" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p60"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p31">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p25"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="p3,p4,p60,p5,p8,p10,p16,p18,p19,p49,p22,p23,p24,p54,p59,p26,p27,p28,p29,p30,p61,p38,p42,p43,p44,p46,p48,p1,p2,p6,p7,p50,p9,p11,p12,p13,p14,p15,p20,p21,p31,p33,p57,p36,p37,p39,p40,p41,p58,p45,p47">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p25"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component·c ↦ i∈to_unfold_c_in⇒i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="instanciate_pattern/unfold_in_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈(∅ ⦂ ℙ(Component×Component))∧(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))(i)⊆m∧m∈ran(∅ ⦂ ℙ(Component×ℙ(Component×ℤ)))⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_root_c/unfold_in_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i0,i,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,m)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p66,p67,p68">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in m∈ran(c_indexes)∪{i·i∈ran(new_c) ∣ {c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (m∈ran(c_indexes)∨(∃i·i∈ran(new_c)∧{c ↦ new_c∼(i)}=m))" org.eventb.core.prHyps="p73">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p77">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p20,p78,p21,p22,p23,p24,p25,p26,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p79,p41,p42,p44,p46,p48,p49,p51,p50,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p42,p60"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p83"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p85,p59,p31,p1,p3,p5,p74,p19,p34,p58,p48,p77,p50,p67">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p86">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p20,p78,p21,p22,p23,p24,p25,p26,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p79,p41,p42,p44,p46,p48,p49,p51,p50,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p42,p60"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p83"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p2,p1,p80,p3,p4,p5,p68,p6,p86,p7,p8,p81,p10,p11,p57,p12,p13,p14,p59,p85,p15,p16,p17,p18,p19,p20,p22,p23,p24,p25,p26,p28,p56,p30,p31,p32,p33,p34,p58,p35,p36,p37,p39,p40,p82,p41,p67,p74,p44,p46,p48,p49,p51,p50,p52,p84,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p87">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p88"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃i·i∈ran(new_c)∧{c ↦ new_c∼(i)}=m)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p89,p90">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p89,p90"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with {c ↦ new_c∼(i0)}=m" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p90">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p68"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2,p1,p4,p68,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p20,p78,p21,p22,p23,p24,p25,p26,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p79,p41,p42,p44,p46,p48,p49,p51,p50,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p81"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p82"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p83"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p42,p60"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p84"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p85"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p83"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p2,p1,p80,p3,p4,p5,p68,p6,p7,p8,p81,p10,p11,p57,p12,p13,p14,p59,p85,p15,p16,p17,p18,p19,p91,p20,p90,p22,p23,p24,p25,p26,p28,p56,p30,p31,p32,p33,p34,p58,p35,p36,p37,p39,p40,p82,p41,p67,p89,p44,p46,p48,p49,p51,p50,p52,p84,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="m∈ran(c_indexes)∨m∈{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒c0∉dom(m)"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="⊤∨(∃i⦂Component·i∈ran(new_c)∧{c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c∈to_unfold_c"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)⊆{c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="m∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ {c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="m∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒¬c0∈dom(m)"/>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="{c ↦ new_c∼(i0)}=m">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="m∈ran(c_indexes)∨(∃i⦂Component·i∈ran(new_c)∧{c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})⇒¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="i0∈ran(new_c)">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ {c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="m∈ran(c_indexes)∨⊤">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="∃i⦂Component·i∈ran(new_c)∧{c ↦ new_c∼(i)}=m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬c0∈dom({c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_node_c/unfold_in_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,i0,x,x0,i1,x1,i,c0,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p45" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0,i,m)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p66,p67,p68">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (ran(c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in m∈ran(c_indexes)∪{i·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p72"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p72" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (m∈ran(c_indexes)∨(∃i·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m))" org.eventb.core.prHyps="p73">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p74">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="p74" org.eventb.core.prInfHyps="p75"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p77">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p77">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p96,p97">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p99"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p103"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x1∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1))" org.eventb.core.prHyps="p106">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p107">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p106"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="p107" org.eventb.core.prInfHyps="p108"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p108"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p60,p61,p38,p87"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p91,p3,p5,p67,p28,p104,p107,p109">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110,p111">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p106"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p112"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="p110,p111" org.eventb.core.prInfHyps="p113"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p114"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p113"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p111">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p115" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p115">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p114" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p116"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p116" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p117"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p110,p91,p3,p117,p5,p67,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p82,p118,p121,p120,p119,p122,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p119,p7,p8,p88,p10,p11,p120,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p92,p74,p44,p46,p48,p49,p50,p51,p52,p67,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p82,p123,p118,p121,p120,p119,p122,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prHyps="p123">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p124"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p123"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,dest,m)" org.eventb.core.prHyps="p59">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p125">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p125" org.eventb.core.prHyps="p74,p27">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p126">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p126" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p127">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p59,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p123,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p127" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p119,p7,p8,p88,p10,p11,p120,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p124,p24,p25,p27,p28,p56,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p92,p74,p44,p46,p48,p49,p50,p51,p123,p52,p67,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p128">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p131"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p131" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}])" org.eventb.core.prHyps="p132">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p133">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="p133" org.eventb.core.prInfHyps="p134"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p134"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p133" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p135,p136"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p135,p136"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p135" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p137"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c0=c∧i=dest)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p137" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p138"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p138"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c0,i,m)" org.eventb.core.prHyps="p59">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p139">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p74,p136">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p140">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p141">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p124,p77,p128,p27">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p69">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p69"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2"/>
</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.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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p142">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p132"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p142" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p144,p145"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p144,p145"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p59,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p123,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p91,p128,p77,p2,p51,p5,p74,p34,p119,p27,p144">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e3,e4,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p146">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(i))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p147">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p147" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p148">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p149">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i0)" org.eventb.core.prGoal="p149" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p150">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p150" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p152" org.eventb.core.prHyps="p151">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p152" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p151,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p151">
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p151" org.eventb.core.prHyps="p151"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p151,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p153"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p133" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p135,p136"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p135,p136"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p135" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p137"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c0=c∧i=dest)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p137" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p138"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p138"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p154">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p154" org.eventb.core.prHyps="p146">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p155">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p156">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p156" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p136,p146,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p74,p44,p46,p138,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p96,p97">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p99"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p103"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0))" org.eventb.core.prHyps="p104">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p117">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p158"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p91,p3,p117,p5,p67,p28,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110,p159">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p110,p159" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p161"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p161" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p162"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p159">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p162" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p163"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p163" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p110,p91,p3,p5,p67,p28,p107">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p156">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p156" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p8,p88,p10,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p156,p82,p119,p165,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p165" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p146,p7,p8,p88,p10,p11,p57,p149,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p92,p74,p44,p46,p48,p49,p50,p51,p52,p67,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p166,p82,p119,p165,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p165" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(i)" org.eventb.core.prHyps="p166">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p141"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p153"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p153" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p133"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c0,i,m)" org.eventb.core.prHyps="p59">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p139">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p141,p74">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p167">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p167" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p136">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p31,p82,p3,p5,p74,p133,p156,p119,p146,p149,p166,p141,p27,p92">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p69">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p59"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p69"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p166"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p168">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p73"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="p168" org.eventb.core.prInfHyps="p169"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p169"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃i·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p168" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p151,p170">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p151,p170"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ new_c∼(i0)}=m" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p170">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p172">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p171"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p172" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p173">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p67" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p129"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p129"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p130"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (i∈ran(new_c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p77">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p131"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p131" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p132"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p77">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p81">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p81" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p170,p8,p88,p10,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p151,p132,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p96,p97">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p99"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p103"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0))" org.eventb.core.prHyps="p104">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p117">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p158"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p91,p151,p3,p117,p5,p27,p28,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110,p159">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p110,p159" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p161"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p161" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p162"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p159">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p162" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p163"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p163" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p91,p110,p151,p3,p5,p27,p28,p107">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p175">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p175" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p176">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p170,p8,p88,p10,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p151,p132,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p7,p170,p8,p88,p10,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p151,p132,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p82,p118,p121,p120,p119,p122,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p123" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p119,p7,p170,p8,p88,p10,p173,p11,p120,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p92,p151,p132,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p82,p123,p118,p121,p120,p119,p122,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p121"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}" org.eventb.core.prHyps="p123">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p177"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p171"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (i=i0)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p178">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p178" org.eventb.core.prHyps="p151,p77,p27,p5,p177">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p178">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=i0" org.eventb.core.prHyps="p178">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p132" org.eventb.core.prInfHyps="p179"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p180"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p123" org.eventb.core.prInfHyps="p181"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p177" org.eventb.core.prInfHyps="p182"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p82,p123,p132,p177"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (c0 ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}])" org.eventb.core.prHyps="p179">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p183">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p179"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p179" org.eventb.core.prHyps="p183" org.eventb.core.prInfHyps="p134"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p134"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0 ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p183" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p184,p185"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p184,p185"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p184" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p186"/>
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(c0=c∧i0=dest)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p186" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p187"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p187"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼(i0)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p173" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p188"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p188"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p188" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p189"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (dom(({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p189" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p190"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p190"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p190" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p191"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈(dom(c_indexes(dest)) ∖ {c})∪{c}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p191" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p192"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p192"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p192" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p193"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (c0∈dom(c_indexes(dest)) ∖ {c}∨c0=c)" org.eventb.core.prHyps="p193">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p194">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p193"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p193" org.eventb.core.prHyps="p194" org.eventb.core.prInfHyps="p195"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p195"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c0∈dom(c_indexes(dest)) ∖ {c}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p194" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p196,p197"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p196,p197"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p197" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p198"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p187" org.eventb.core.prHyps="p198" org.eventb.core.prInfHyps="p199"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p199"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p177,p30,p32,p82,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p132,p46,p48,p49,p50,p51,p123,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=i0" org.eventb.core.prHyps="p178">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p200"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p201"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p171,p66,p132,p177"/>
<org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p179,p182"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ new_c∼(i0)}=m" org.eventb.core.prHyps="p170">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p200"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p201"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p181,p1,p2,p86,p3,p4,p5,p6,p119,p7,p170,p8,p88,p10,p11,p120,p57,p12,p13,p14,p59,p91,p185,p15,p16,p179,p17,p18,p19,p198,p21,p22,p23,p24,p25,p27,p28,p56,p30,p31,p32,p82,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p196,p92,p151,p178,p44,p46,p180,p48,p49,p50,p51,p123,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p202">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p193"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p187" org.eventb.core.prHyps="p202" org.eventb.core.prInfHyps="p203"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p193" org.eventb.core.prHyps="p202" org.eventb.core.prInfHyps="p204"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p203" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p205"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p204"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p185" org.eventb.core.prInfHyps="p206"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p185"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p185,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p177,p30,p32,p82,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p132,p46,p48,p49,p50,p51,p123,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=i0" org.eventb.core.prHyps="p178">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p200"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p201"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p171,p66,p132,p177"/>
<org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p179,p182"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ new_c∼(i0)}=m" org.eventb.core.prHyps="p170">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p200"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p201"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p179" org.eventb.core.prInfHyps="p207"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p179"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p181,p1,p2,p86,p3,p4,p5,p6,p119,p7,p170,p8,p88,p10,p11,p120,p57,p12,p13,p202,p14,p59,p91,p185,p15,p16,p17,p18,p19,p21,p22,p23,p207,p24,p25,p27,p205,p28,p56,p30,p31,p32,p82,p33,p34,p58,p35,p36,p37,p39,p40,p77,p89,p41,p92,p151,p178,p206,p44,p46,p180,p48,p49,p50,p51,p123,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p142">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p179"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p132" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p143"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p179" org.eventb.core.prHyps="p142" org.eventb.core.prInfHyps="p208"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p143"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p208"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p177,p30,p32,p82,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p123,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with i=i0" org.eventb.core.prHyps="p178">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p200"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p201"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p66,p171,p177"/>
<org.eventb.core.prHypAction name="SELECT3" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p182"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p76"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){c ↦ new_c∼(i0)}=m" org.eventb.core.prHyps="p170">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p200"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p201"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p201" org.eventb.core.prHyps="p181" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p59,p91,p151,p2,p181,p3,p5,p17,p34,p119,p142,p170,p51,p173,p118,p27,p28">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p178"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p123"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p146">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p133">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p133" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p133">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p209"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p209" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p174"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p133">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="p146,p133" org.eventb.core.prInfHyps="p210"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p210"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah ((c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(i))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p147">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p147" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p148">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p149">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees i1)" org.eventb.core.prGoal="p149" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p211">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p211" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p213" org.eventb.core.prHyps="p212">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p213" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p175">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p175" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p176">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p176" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p170,p8,p88,p10,p212,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p151,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p212">
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p212" org.eventb.core.prHyps="p212"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p120">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p120" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p170,p8,p88,p10,p212,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p151,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p82">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p170,p8,p88,p10,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p151,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p92">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p94">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p96,p97">
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p96" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p99"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p99"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p99" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p100"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼([[0]])})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p97" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p101"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p101"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p101" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p102"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p100" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p103"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p103"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈c_indexes∪{i·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p105"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0))" org.eventb.core.prHyps="p104">
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p117">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p117" org.eventb.core.prInfHyps="p158"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p158"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p91,p151,p3,p117,p5,p27,p28,p106">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p110,p159">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p104"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p104" org.eventb.core.prHyps="p110,p159" org.eventb.core.prInfHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="p110" org.eventb.core.prInfHyps="p161"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p160"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p161" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p162"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0" org.eventb.core.prGoal="p98" org.eventb.core.prHyps="p159">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p111">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p162" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p163"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p163" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p91,p110,p151,p3,p5,p27,p28,p107">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.2.1.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p156">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p156" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p6,p146,p7,p170,p8,p88,p10,p173,p11,p57,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p151,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e5"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p119">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p119" org.eventb.core.prHyps="p42"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p156,p82,p119,p165,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p165" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p166" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p146,p7,p170,p8,p88,p10,p173,p11,p57,p149,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p30,p31,p82,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p92,p151,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p166,p82,p119,p165,p92">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p165" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p149"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with (c_indexes∪{i·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(i)" org.eventb.core.prHyps="p166">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p214"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p171"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p166,p149"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c0=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p202">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p173" org.eventb.core.prInfHyps="p215"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p133" org.eventb.core.prInfHyps="p216"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in c ↦ i∈to_unfold_c_in ∖ {c ↦ dest}" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p216" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p217,p218"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p217,p218"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p217" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p219"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c∉dom(c_indexes(i)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p220">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p220" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p221">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p221" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p222" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p222" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p223">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p149,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p223" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p146,p7,p170,p8,p88,p10,p11,p173,p57,p149,p166,p12,p13,p202,p14,p218,p59,p91,p15,p16,p17,p18,p19,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p216,p92,p151,p44,p46,p48,p49,p50,p51,p215,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p222,p119">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p222" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p223"/>
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({c ↦ new_c∼(i0)})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p215" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p224"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p224"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p224" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p225"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in hyp (dom(({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)}))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p225" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p226"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p226"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p226"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes(i)⊆c_indexes(dest))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p228">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p228" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p229"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p229" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p230"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p230,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p146,p7,p170,p8,p88,p10,p11,p57,p166,p12,p13,p202,p14,p218,p59,p91,p15,p16,p17,p18,p19,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p216,p92,p151,p230,p44,p46,p48,p49,p50,p51,p52,p215,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p231" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p231" org.eventb.core.prHyps="p59,p31,p151,p82,p3,p5,p219,p156,p119,p223,p233,p146,p170,p118,p27,p214,p202,p92,p218">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p231,p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes(i)⊂c_indexes(dest))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p118,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p234">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p234" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p235" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrite ⊂ in goal" org.eventb.core.prGoal="p235" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p231">
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p231" org.eventb.core.prHyps="p231"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p236">
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p236" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p237">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p11,p57,p166,p12,p13,p202,p14,p218,p59,p91,p231,p15,p16,p17,p18,p19,p237,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p216,p92,p151,p44,p46,p48,p49,p50,p51,p52,p215,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p235,p119,p118">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(c_indexes(i))⊂dom(c_indexes(dest)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p118,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p234">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p234" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p238" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p238" org.eventb.core.prHyps="p235,p91,p151,p2,p231,p118,p5,p27,p170,p92">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p238,p118">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst i)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p157">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p11,p57,p166,p12,p13,p202,p14,p218,p59,p235,p91,p231,p15,p16,p17,p18,p19,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p238,p216,p92,p151,p44,p46,p48,p49,p50,p51,p52,p215,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p239">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(i))=(containers∪id)[{inst2pat_c(i)}]" org.eventb.core.prHyps="p239">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p223" org.eventb.core.prInfHyps="p240"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p238" org.eventb.core.prInfHyps="p241"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p223,p238"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p175">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p175" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p11,p57,p166,p12,p13,p202,p14,p218,p59,p235,p91,p231,p15,p16,p17,p18,p19,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p239,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p241,p238,p216,p92,p151,p44,p46,p48,p49,p50,p51,p52,p215,p118,p240,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p242">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(dest))=(containers∪id)[{inst2pat_c(dest)}]" org.eventb.core.prHyps="p242">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p241" org.eventb.core.prInfHyps="p243"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p241"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (inst2pat_c(i)=container(c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p244">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p244" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p241,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p243,p11,p57,p166,p12,p13,p202,p14,p218,p59,p235,p91,p231,p15,p16,p17,p18,p19,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p239,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p241,p238,p216,p92,p151,p44,p46,p242,p48,p49,p50,p51,p52,p215,p118,p240,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p245">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p245" org.eventb.core.prHyps="p28"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p246">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p241,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p246" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p243,p11,p57,p166,p12,p13,p202,p14,p218,p59,p235,p91,p231,p15,p16,p17,p18,p19,p223,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p239,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p241,p238,p216,p92,p151,p44,p46,p242,p48,p49,p50,p51,p52,p215,p118,p240,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p247">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p247" org.eventb.core.prHyps="p33"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p248" org.eventb.core.prHyps="p246,p245,p157,p247">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p241,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p248" org.eventb.core.prHyps="p59,p30,p27,p5,p157,p218">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p246,p248,p245,p157,p247">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (inst2pat_c(dest)=container(c))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p249">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p249" org.eventb.core.prHyps="p246,p245,p247">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p250">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p250" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p175">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p241,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p175" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p219,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p243,p11,p57,p166,p12,p13,p202,p14,p218,p59,p235,p91,p231,p15,p16,p157,p17,p18,p19,p247,p223,p245,p248,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p239,p30,p31,p82,p32,p66,p33,p34,p58,p35,p36,p37,p39,p40,p89,p41,p241,p238,p216,p92,p151,p44,p46,p242,p48,p49,p246,p50,p51,p52,p215,p118,p240,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p251" org.eventb.core.prHyps="p246,p245,p175,p247">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p223,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p133,p35,p36,p61,p37,p38,p39,p40,p85,p41,p241,p238,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c0=c" org.eventb.core.prHyps="p202">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p173,p133"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p215,p216"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p251" org.eventb.core.prHyps="p59,p30,p27,p243,p5">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p246,p251,p245,p175,p247">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with inst2pat_c(i)=container(c)" org.eventb.core.prHyps="p248">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p239" org.eventb.core.prInfHyps="p252"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p240" org.eventb.core.prInfHyps="p253"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p243" org.eventb.core.prInfHyps="p254"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p243,p240,p239"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with inst2pat_c(dest)=container(c)" org.eventb.core.prHyps="p251">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p248" org.eventb.core.prInfHyps="p255"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p252" org.eventb.core.prInfHyps="p256"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p253" org.eventb.core.prInfHyps="p257"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p254" org.eventb.core.prInfHyps="p258"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p254,p248,p253,p252"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p258" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p174"/>
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p174"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p251"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p248"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p238"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p235"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p231"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p222"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p198">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dc (c∈dom(c_indexes(i)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p220">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p220" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p221">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p221" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p259">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c0 ↦ c∈containers)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p260">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p149,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c0 ↦ inst2pat_c(i)∈container)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p261">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p261" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p28">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p164">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p60,p61,p38,p87"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p164" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p146,p7,p170,p8,p88,p10,p60,p173,p11,p57,p149,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p198,p109,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p61,p37,p38,p39,p40,p89,p41,p92,p151,p44,p46,p87,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e6"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p245">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p245" org.eventb.core.prHyps="p28"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p262" org.eventb.core.prHyps="p157,p245">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p262" org.eventb.core.prHyps="p30,p31,p27,p157,p170,p133">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p157,p262,p245">
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst i)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p157">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p157"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p239">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(i))=(containers∪id)[{inst2pat_c(i)}]" org.eventb.core.prHyps="p239">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p259" org.eventb.core.prInfHyps="p263"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p259"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p42,p2,p60,p259,p61,p38,p87"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p109"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p260" org.eventb.core.prHyps="p1,p86,p2,p3,p4,p5,p156,p6,p119,p262,p146,p7,p170,p8,p88,p10,p60,p173,p11,p57,p149,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p157,p19,p245,p198,p109,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p239,p263,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p61,p37,p38,p39,p40,p89,p41,p92,p151,p44,p46,p87,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p262"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p260">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(c_indexes(dest))⊆dom(c_indexes(i)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p264">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p264" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p265">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p265" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p229"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p229" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p230"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p230,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p37,p39,p40,p89,p41,p92,p151,p230,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p266" org.eventb.core.prHyps="p156,p118,p119">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst i)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p157">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p37,p39,p40,p89,p41,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p239">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(i))=(containers∪id)[{inst2pat_c(i)}]" org.eventb.core.prGoal="p266" org.eventb.core.prHyps="p239">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p267">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p259" org.eventb.core.prInfHyps="p263"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p259"/>
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst dest)" org.eventb.core.prHyps="p2">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p175">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p259,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p175" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p239,p263,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p37,p39,p40,p89,p41,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p242">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with dom(c_indexes(dest))=(containers∪id)[{inst2pat_c(dest)}]" org.eventb.core.prGoal="p267" org.eventb.core.prHyps="p242">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p268">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p259,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC4" org.eventb.core.prGoal="p268" org.eventb.core.prHyps="p30,p31,p3,p51,p5,p33,p34,p27,p13,p263">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e4"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p118,p266">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(c_indexes(i))⊆dom(c_indexes(dest))∪{c})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p118,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p234">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p234" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p269" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p269" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p266,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p37,p39,p40,p89,p41,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p269,p118">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom(c_indexes(i))=dom(c_indexes(dest))∪{c})" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p118,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p234">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p234" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76">
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p270" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p270" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p266,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p37,p39,p40,p89,p41,p269,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p118,p270">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (inst2pat_c(i)=c)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p261">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p261" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p157">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p157" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p266,p59,p91,p15,p16,p17,p18,p19,p198,p21,p22,p260,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p259,p35,p36,p270,p37,p39,p40,p89,p41,p269,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p245">
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p245" org.eventb.core.prHyps="p28"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p271" org.eventb.core.prHyps="p157,p245">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p59,p91,p173,p5,p157,p133,p27,p170,p92,p266,p198">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p157,p271,p245">
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with inst2pat_c(i)=c" org.eventb.core.prHyps="p271">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p272"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p5" org.eventb.core.prInfHyps="p273"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p31" org.eventb.core.prInfHyps="p274"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p275"/>
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p173" org.eventb.core.prInfHyps="p276"/>
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p133" org.eventb.core.prInfHyps="p277"/>
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p278"/>
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p92" org.eventb.core.prInfHyps="p279"/>
<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p214" org.eventb.core.prInfHyps="p280"/>
<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p198" org.eventb.core.prInfHyps="p281"/>
<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p259" org.eventb.core.prInfHyps="p282"/>
<org.eventb.core.prHypAction name="FORWARD_INF11" org.eventb.core.prHyps="p260" org.eventb.core.prInfHyps="p283"/>
<org.eventb.core.prHypAction name="FORWARD_INF12" org.eventb.core.prHyps="p269" org.eventb.core.prInfHyps="p284"/>
<org.eventb.core.prHypAction name="FORWARD_INF13" org.eventb.core.prHyps="p270" org.eventb.core.prInfHyps="p285"/>
<org.eventb.core.prHypAction name="DESELECT14" org.eventb.core.prHyps="p31,p82,p5,p133,p259,p170,p270,p198,p173,p260,p27,p269,p214,p92"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p170,p8,p10,p60,p11,p173,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p198,p20,p21,p22,p23,p260,p24,p25,p171,p28,p27,p56,p214,p30,p32,p31,p82,p66,p33,p34,p58,p133,p259,p35,p36,p61,p37,p38,p270,p39,p40,p85,p41,p269,p92,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with inst2pat_c(i)=c" org.eventb.core.prHyps="p271">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p286"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p287"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p171" org.eventb.core.prInfHyps="p288"/>
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p166" org.eventb.core.prInfHyps="p289"/>
<org.eventb.core.prHypAction name="DESELECT4" org.eventb.core.prHyps="p166,p54,p171,p66"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}=m" org.eventb.core.prHyps="p275">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p170" org.eventb.core.prInfHyps="p290"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p170"/>
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with inst2pat_c(i)=c" org.eventb.core.prHyps="p271">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p290" org.eventb.core.prInfHyps="p291"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p290"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p291"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p59,p91,p3,p118,p157,p277,p281,p276,p233,p92,p266">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p271"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p270"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p269"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p266"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p260"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p223">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c_indexes(i)⊆c_indexes(dest))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p227">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p227" org.eventb.core.prHyps="p156,p119">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p228">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p228" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p229"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p229" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p230"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p230,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p118" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p59,p91,p15,p16,p17,p18,p19,p223,p198,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p92,p151,p230,p44,p46,p48,p49,p50,p51,p52,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p231" org.eventb.core.prHyps="p156,p119,p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p231" org.eventb.core.prHyps="p59,p31,p151,p82,p3,p5,p133,p156,p119,p223,p233,p146,p170,p198,p173,p118,p27,p214,p92">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p156,p119,p231,p118">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p149" org.eventb.core.prHyps="p118" org.eventb.core.prInfHyps="p232"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p232" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p233"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p4,p6,p7,p8,p10,p60,p11,p57,p166,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p171,p28,p56,p30,p32,p66,p33,p34,p58,p35,p36,p61,p37,p38,p39,p40,p85,p41,p42,p44,p46,p48,p49,p50,p51,p52,p53,p54,p55"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p86">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p86"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p87"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p88"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p89"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p61,p60"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p44">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p90"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p38,p87"/>
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p174" org.eventb.core.prHyps="p1,p2,p86,p3,p4,p5,p156,p6,p119,p233,p146,p7,p170,p8,p88,p10,p173,p11,p57,p166,p12,p13,p14,p59,p91,p231,p15,p16,p17,p18,p19,p223,p198,p21,p22,p23,p24,p25,p171,p27,p28,p56,p214,p30,p31,p82,p32,p66,p33,p34,p133,p58,p35,p36,p37,p39,p40,p89,p41,p92,p151,p44,p46,p48,p49,p50,p51,p52,p118,p90,p53,p54,p55">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p231"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p259"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p202"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p166"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p133"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p77"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(new_c))"/>
<org.eventb.core.prPred name="p167" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in∧⊤∧⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p233" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="¬i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p257" org.eventb.core.predicate="¬c∈(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p208" org.eventb.core.predicate="c0 ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}∨⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p243" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]⊂(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p176" org.eventb.core.predicate="dest∈components[{Inst}]"/>
<org.eventb.core.prPred name="p202" org.eventb.core.predicate="c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p193" org.eventb.core.predicate="c0∈dom(c_indexes(dest)) ∖ {c}∨c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p185" org.eventb.core.predicate="c0 ↦ i0∈to_unfold_c_in">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p289" org.eventb.core.predicate="(c_indexes∪{i0⦂Component·i0∈ran(new_c) ∣ i0 ↦ c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}})(i)=c_indexes(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="¬(c0=c∧i=dest)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒c0∉dom(m)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼))∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="x∈ran(new_c)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p290" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i0)}=c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p248" org.eventb.core.predicate="inst2pat_c(i)=container(c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p207" org.eventb.core.predicate="c ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}∨c∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(⊤∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="x0=({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p283" org.eventb.core.predicate="c0 ↦ inst2pat_c(i)∈containers">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p161" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(⊤∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p261" org.eventb.core.predicate="i∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p203" org.eventb.core.predicate="¬⊤∨¬i0=dest">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p175" org.eventb.core.predicate="dest∈dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c0⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒¬c0∈dom(m)"/>
<org.eventb.core.prPred name="p241" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]⊂dom(c_indexes(dest))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p217" org.eventb.core.predicate="¬c ↦ i∈{c ↦ dest}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p164" org.eventb.core.predicate="i∈components[{Inst}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p216" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in ∖ {c ↦ dest}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p196" org.eventb.core.predicate="c0∈dom(c_indexes(dest))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p183" org.eventb.core.predicate="c0 ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p211" org.eventb.core.predicate="i1∈ran(new_c)⇒dest∈dom(c_indexes)∧i1∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p174" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="⊤∧c_indexes(dest)⊆m∧⊤">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p194" org.eventb.core.predicate="c0∈dom(c_indexes(dest)) ∖ {c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p276" org.eventb.core.predicate="c0∈dom(c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p197" org.eventb.core.predicate="¬c0∈{c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p160" org.eventb.core.predicate="x ↦ x0∈c_indexes∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p180" org.eventb.core.predicate="i0∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(dest){c ↦ new_c∼(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p288" org.eventb.core.predicate="(c_indexes∪{i0⦂Component·i0∈ran(new_c) ∣ i0 ↦ c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}})(i)⊆c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p169" org.eventb.core.predicate="m∈ran(c_indexes)∨⊤">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p191" org.eventb.core.predicate="c0∈(dom(c_indexes(dest)) ∖ {c})∪{c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p221" org.eventb.core.predicate="⊤∧⊤"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="x0=x1">
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p273" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(inst2pat_c(i)) ↣ Component ∖ ran(components)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧⊤∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p286" org.eventb.core.predicate="inst2pat_c(i)∈dom(c_multiplicity)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="⊤∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p209" org.eventb.core.predicate="⊥∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊥)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p212" org.eventb.core.predicate="i1∈ran(new_c)">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p173" org.eventb.core.predicate="c0∈dom(c_indexes(dest){c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p166" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)=c_indexes(i)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p281" org.eventb.core.predicate="¬c0=inst2pat_c(i)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="i∈dom(new_c∼)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p172" org.eventb.core.predicate="¬c0∈dom(c_indexes(dest){c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p218" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p247" org.eventb.core.predicate="container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p258" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]⊂(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]"/>
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p198" org.eventb.core.predicate="¬c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p200" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i0)⊆m">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p254" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{container(c)}]⊂(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]"/>
<org.eventb.core.prPred name="p186" org.eventb.core.predicate="¬(c0=c∧i0=dest)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p265" org.eventb.core.predicate="dest∈dom(c_indexes)∧⊤∧⊤"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p260" org.eventb.core.predicate="c0 ↦ c∈containers">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))∧(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆m∧m∈ran(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})⇒¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/>
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="c0∈container∼[{c}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="i∈dom(c_indexes)∨⊥">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p214" org.eventb.core.predicate="c_indexes(i)⊆c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p177" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i)}⊆c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p239" org.eventb.core.predicate="dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p263" org.eventb.core.predicate="c∈(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="m∈ran(c_indexes)∪ran({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="dest∈dom(c_indexes)∧i0∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x ↦ x0∈c_indexes∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p285" org.eventb.core.predicate="dom(c_indexes(i))=dom(c_indexes(dest))∪{inst2pat_c(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p284" org.eventb.core.predicate="dom(c_indexes(i))⊆dom(c_indexes(dest))∪{inst2pat_c(i)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p252" org.eventb.core.predicate="dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{container(c)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p279" org.eventb.core.predicate="c_indexes∪{i0⦂Component·i0∈ran(new_c) ∣ i0 ↦ c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}}∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x ↦ x0∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p162" org.eventb.core.predicate="x ↦ x1∈c_indexes∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬c0∈dom(m)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="x ↦ x0∈c_indexes∨({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p249" org.eventb.core.predicate="dest∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component∧c∈dom(container)∧container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨c0 ↦ i∈(container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p206" org.eventb.core.predicate="c ↦ i0∈to_unfold_c_in">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p253" org.eventb.core.predicate="¬c∈(containers∪(id ⦂ ℙ(Component×Component)))[{container(c)}]"/>
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p246" org.eventb.core.predicate="c∈dom(container)"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c0 ↦ i∈(to_unfold_c_in ∖ {c ↦ dest})∪((container∼[{c}] ∖ c_multiplicity∼[{0}]) × ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="c∈dom(c_multiplicity)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p264" org.eventb.core.predicate="dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="⊤∨(∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊤)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p199" org.eventb.core.predicate="¬⊥∨¬i0=dest">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p244" org.eventb.core.predicate="i∈dom(inst2pat_c)∧inst2pat_c∈Component ⇸ Component∧c∈dom(container)∧container∈Component ⇸ Component">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p251" org.eventb.core.predicate="inst2pat_c(dest)=container(c)"/>
<org.eventb.core.prPred name="p181" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i0)=c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ)∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p219" org.eventb.core.predicate="¬i=dest">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒i∈dom(new_c∼)"/>
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p236" org.eventb.core.predicate="¬c_indexes(i)=c_indexes(dest)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="m∈ran(c_indexes)∨m∈{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p201" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i0)⊆c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p250" org.eventb.core.predicate="dest∈dom(inst2pat_c)∧⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p224" org.eventb.core.predicate="c∈dom((dom({c ↦ new_c∼(i0)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p192" org.eventb.core.predicate="c0∈dom(c_indexes(dest)) ∖ {c}∨c0∈{c}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="i∈dom(c_indexes)∨i∈ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p235" org.eventb.core.predicate="c_indexes(i)⊂c_indexes(dest)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="x ↦ x0∈c_indexes∨x ↦ x0∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p158" org.eventb.core.predicate="⊤∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p231" org.eventb.core.predicate="c_indexes(i)⊆c_indexes(dest)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p179" org.eventb.core.predicate="c0 ↦ i0∈to_unfold_c_in ∖ {c ↦ dest}∨c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p278" org.eventb.core.predicate="i∈dom(c_indexes∪{i0⦂Component·i0∈ran(new_c) ∣ i0 ↦ c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p237" org.eventb.core.predicate="c_indexes(i)=c_indexes(dest)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p223" org.eventb.core.predicate="¬c∈dom(c_indexes(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p245" org.eventb.core.predicate="inst2pat_c∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="i∈dom(c_indexes)∪dom({i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p275" org.eventb.core.predicate="c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}=m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p171" org.eventb.core.predicate="(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})(i)⊆c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p205" org.eventb.core.predicate="¬i0=dest">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(c)"/>
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p274" org.eventb.core.predicate="card(ran(new_c))=c_multiplicity(inst2pat_c(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p182" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i0)}⊆c_indexes(dest){c ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p267" org.eventb.core.predicate="dom(c_indexes(dest))⊆(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="m∈ran(c_indexes)∪{i⦂Component·i∈ran(new_c) ∣ c_indexes(dest){c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p268" org.eventb.core.predicate="(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]⊆(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p277" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {inst2pat_c(i) ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p256" org.eventb.core.predicate="dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p282" org.eventb.core.predicate="inst2pat_c(i)∈dom(c_indexes(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="i0∈ran(new_c)">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p178" org.eventb.core.predicate="i=i0">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p230" org.eventb.core.predicate="∀i⦂Component·¬i∈ran(new_c)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p232" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊤∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p228" org.eventb.core.predicate="⊤∧⊤∧dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="x ↦ x1∈c_indexes">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="¬c0=c∨¬i=dest">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="x ↦ x1∈c_indexes∨x ↦ x1∈{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="¬c∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p234" org.eventb.core.predicate="⊤∧⊤∧⊤"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p190" org.eventb.core.predicate="c0∈dom({c} ⩤ c_indexes(dest))∪dom({c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p213" org.eventb.core.predicate="dest∈dom(c_indexes)∧i1∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i1" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ (dom({c ↦ new_c∼(i)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(c) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p184" org.eventb.core.predicate="¬c0 ↦ i0∈{c ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ ({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i)}}">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p225" org.eventb.core.predicate="c∈dom(({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p156" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p262" org.eventb.core.predicate="c0 ↦ inst2pat_c(i)∈container">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="⊤∧c_indexes(i)⊆m∧⊤">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p170" org.eventb.core.predicate="c_indexes(dest){c ↦ new_c∼(i0)}=m">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ↔ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p227" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="(∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ)∧i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p266" org.eventb.core.predicate="dom(c_indexes(dest))⊆dom(c_indexes(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x ↦ x1∈c_indexes∨(⊤∧⊤)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p291" org.eventb.core.predicate="c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}=c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p157" org.eventb.core.predicate="i∈dom(inst2pat_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="i0∈ran(new_c)⇒dest∈dom(c_indexes)∧i0∈ran(new_c)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p168" org.eventb.core.predicate="∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p272" org.eventb.core.predicate="inst2pat_c(i) ↦ dest∈to_unfold_c_in">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧i∈ran(new_c))">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p165" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒dest∈dom(c_indexes)∧i∈dom(new_c∼)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="¬c0∈c_multiplicity∼[{0}]">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p210" org.eventb.core.predicate="⊤∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊥)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="c_indexes(i)⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p271" org.eventb.core.predicate="inst2pat_c(i)=c">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p204" org.eventb.core.predicate="c0∈dom(c_indexes(dest)) ∖ {c}∨⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p189" org.eventb.core.predicate="c0∈dom(({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in∧c_indexes(dest)⊆m∧m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="m∈ran(c_indexes)∨(∃i⦂Component·i∈ran(new_c)∧c_indexes(dest){c ↦ new_c∼(i)}=m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p222" org.eventb.core.predicate="c∉dom(c_indexes(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p259" org.eventb.core.predicate="c∈dom(c_indexes(i))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="¬c0 ↦ i∈{c ↦ dest}">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p270" org.eventb.core.predicate="dom(c_indexes(i))=dom(c_indexes(dest))∪{c}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p280" org.eventb.core.predicate="c_indexes(i)⊆c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨⊤">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p220" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p188" org.eventb.core.predicate="c0∈dom((dom({c ↦ new_c∼(i0)}) ⩤ c_indexes(dest))∪{c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p238" org.eventb.core.predicate="dom(c_indexes(i))⊂dom(c_indexes(dest))">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p269" org.eventb.core.predicate="dom(c_indexes(i))⊆dom(c_indexes(dest))∪{c}">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="c0 ↦ i∈to_unfold_c_in ∖ {c ↦ dest}∨(c0∈container∼[{c}] ∖ c_multiplicity∼[{0}]∧⊥)">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="⊤∨(x∈ran(new_c)∧({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x1)">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p226" org.eventb.core.predicate="c∈dom({c} ⩤ c_indexes(dest))∪dom({c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="c_indexes(dest)⊆m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="i∈dom(c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}})∧c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∈Component ⇸ ℙ(Component × ℤ)∧dest∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)∧new_c∼∈Component ⇸ ℤ">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p195" org.eventb.core.predicate="⊤∨c0=c">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p242" org.eventb.core.predicate="dom(c_indexes(dest))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(dest)}]"/>
<org.eventb.core.prPred name="p287" org.eventb.core.predicate="(c_indexes∪{i0⦂Component·i0∈ran(new_c) ∣ i0 ↦ c_indexes(dest){inst2pat_c(i) ↦ new_c∼(i0)}})(i)⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p163" org.eventb.core.predicate="x ↦ x1∈c_indexes∨⊥">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p215" org.eventb.core.predicate="c∈dom(c_indexes(dest){c ↦ new_c∼(i0)})">
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="dest∈dom(c_indexes)"/>
<org.eventb.core.prPred name="p187" org.eventb.core.predicate="¬c0=c∨¬i0=dest">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i0" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p240" org.eventb.core.predicate="¬c∈(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p159" org.eventb.core.predicate="({c} ⩤ c_indexes(dest))∪{c ↦ new_c∼(x)}=x0">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p229" org.eventb.core.predicate="∀i⦂Component·i∈ran(new_c)⇒⊥∧i∈ran(new_c)∧new_c∼∈Component ⇸ ℤ"/>
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1">
<org.eventb.core.prIdent name="x" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="∀x⦂Component,x0⦂ℙ(Component×ℤ),x1⦂ℙ(Component×ℤ)·x ↦ x0∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}∧x ↦ x1∈c_indexes∪{i⦂Component·i∈ran(new_c) ∣ i ↦ c_indexes(dest){c ↦ new_c∼(i)}}⇒x0=x1"/>
<org.eventb.core.prPred name="p255" org.eventb.core.predicate="inst2pat_c(i)=inst2pat_c(dest)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="i∈dom(c_indexes)∪ran(new_c)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="c"/>
<org.eventb.core.prExpr name="e5" org.eventb.core.expression="dom(inst2pat_c)"/>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e4" org.eventb.core.expression="dest"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c0">
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e6" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/>
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/>
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/>
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/>
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/>
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/>
<org.eventb.core.prReas name="r25" org.eventb.core.prRID="org.eventb.core.seqprover.sir"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_index/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="c,k" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prRule name="r1" 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.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,k)" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p22,p23">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p4">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p25"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p22" org.eventb.core.prInfHyps="p26"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p22"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p28"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p29"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p27,p25"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p30,p1,p31,p14,p22,p32,p33,p12,p27,p25"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p34"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p35"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p1"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p29,p3,p5,p23,p15,p7,p8,p9,p10,p35">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Pat∈Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c∈to_unfold_c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)">
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern">
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="unfold_in_index/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,i,k" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p56">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p42" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prRule name="r1" 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="p57"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,i,k)" org.eventb.core.prGoal="p56" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p60,p61">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p55" org.eventb.core.prInfHyps="p64"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p38,p60,p55"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p33" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p63" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p33,p63"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p38,p8,p55,p51,p60,p22,p49,p50,p33,p63"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p68"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p39">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p38" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p38"/>
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ct goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="p71">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,i,c_indexes(i){c ↦ k})" org.eventb.core.prHyps="p70">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p1,p2,p68,p3,p4,p5,p6,p64,p8,p55,p9,p51,p60,p65,p10,p11,p12,p61,p67,p70,p13,p14,p15,p16,p17,p69,p19,p71,p20,p21,p22,p24,p50,p26,p27,p28,p29,p52,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p63,p43,p44,p45,p46,p47,p66,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p75">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="p38"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p73" org.eventb.core.prUnsel="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p71,p61">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74,p75"/>
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (c∉dom(c_indexes(i)))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p73"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="p74,p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p79" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p1,p2,p68,p3,p4,p74,p75,p5,p6,p64,p8,p55,p9,p51,p60,p65,p10,p11,p12,p61,p67,p70,p13,p14,p15,p16,p17,p69,p19,p71,p20,p21,p22,p24,p50,p26,p27,p28,p29,p52,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p63,p43,p44,p45,p46,p47,p66,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p74,p79,p75">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p1,p2,p68,p3,p4,p74,p75,p5,p6,p64,p8,p55,p9,p51,p60,p65,p10,p11,p12,p61,p67,p13,p14,p15,p16,p17,p80,p69,p19,p71,p20,p21,p22,p24,p50,p26,p27,p28,p29,p52,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p41,p63,p43,p44,p45,p46,p47,p66,p48,p49">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p79"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p73,p81" org.eventb.core.prUnsel="p73">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p70"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p73" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74,p75"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prHyps="p81,p10">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆c_indexes(i){c ↦ k}∧c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="i∈dom(c_indexes)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="c_indexes∈Component ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="k∈1 ‥ M">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="k∈1 ‥ max(ran(c_multiplicity))">
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="¬c∈dom(c_indexes(i))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="c_indexes(i)⊆c_indexes(i){c ↦ k}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="c∉dom(c_indexes(i))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="⊤∧c_indexes(i)⊆c_indexes(i){c ↦ k}∧⊤">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬c∈dom(c_indexes(i){c ↦ k})">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="i∈dom(c_indexes)∧c_indexes∈Component ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="⊥"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="c_indexes(i){c ↦ k}">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="k" org.eventb.core.type="ℤ"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.contrL1"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/unfold_in_index_ext/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b,c,s,i,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prRule name="r1" 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="p62"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c,s,i,m)" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p65,p66,p67,p68">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst c,s,i,m)" org.eventb.core.prHyps="p58">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p70">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p70" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p71">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p65,p67,p68">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72">
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p72" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p73">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p8,p59,p9,p56,p12,p13,p14,p16,p17,p18,p19,p20,p74,p58,p21,p22,p23,p24,p25,p26,p55,p28,p29,p30,p31,p57,p32,p33,p60,p34,p35,p36,p37,p38,p39,p40,p42,p45,p47,p48,p49,p50,p51,p53,p54"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p76"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p59" org.eventb.core.prInfHyps="p77"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p78"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p60,p59"/>
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p79"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p76" org.eventb.core.prInfHyps="p80"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p35,p76"/>
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p52,p44,p10,p15,p65,p66,p67,p68,p1,p2,p3,p4,p5,p6,p8,p9,p56,p12,p13,p14,p16,p17,p18,p19,p20,p58,p22,p23,p24,p25,p26,p55,p28,p29,p30,p31,p57,p32,p33,p34,p36,p37,p38,p39,p42,p45,p47,p48,p49,p50,p51,p53,p54,p75,p77,p78,p79,p80">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p69">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p58"/>
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p69"/>
</org.eventb.core.prAnte>
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0,e1,e2,e3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈(containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components)))∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒s∉dom(m)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="⊤∧⊤∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧⊤">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀i1⦂Component,i2⦂Component·i1∈dom(inst2pat_c)∧i2∈dom(inst2pat_c)∧i1 ↦ i2∈containers⇒c_indexes(i2)=dom(c_indexes(i2)) ◁ c_indexes(i1)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬s∈dom(m)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_indexes(i)⊆m">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,s⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component))∧m∈ran(c_indexes)⇒¬s∈dom(m)"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="m∈ran(c_indexes)">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="s ↦ c∈containers∪(new_components∼;containers;inst_components;containers)∪(new_components∼;containers;(new_components∪inst_components))∪(id ⦂ ℙ(Component×Component))">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="c">
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="s">
<org.eventb.core.prIdent name="s" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="i">
<org.eventb.core.prIdent name="i" org.eventb.core.type="Component"/>
</org.eventb.core.prExpr>
<org.eventb.core.prExpr name="e3" org.eventb.core.expression="m">
<org.eventb.core.prIdent name="m" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prExpr>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/>
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/new_cont/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prRule name="r1" 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="p62"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p63"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p56,p6,p8,p60,p9,p57,p11,p12,p13,p59,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p55,p28,p29,p30,p31,p58,p32,p33,p61,p34,p35,p36,p37,p64,p38,p40,p42,p45,p47,p48,p49,p50,p51,p53,p54"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p35,p56"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p61,p60,p67"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p65,p3,p4,p5,p6,p70,p8,p9,p57,p10,p11,p12,p13,p59,p72,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p26,p55,p28,p29,p30,p31,p58,p32,p33,p34,p36,p37,p71,p38,p42,p44,p45,p47,p48,p49,p50,p51,p66,p52,p53,p54,p69">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/new_conts/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="b" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55" org.eventb.core.prSets="Component,Model" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p62"/>
<org.eventb.core.prRule name="r1" 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="p63"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p57,p6,p8,p61,p9,p58,p11,p12,p13,p60,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p59,p32,p33,p62,p34,p35,p36,p37,p65,p38,p40,p42,p45,p47,p48,p49,p50,p51,p54,p55"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p66">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p66"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p42">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p35" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p40" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p40,p35,p57"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p9">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p61" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p62" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p62,p61,p68"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p66,p3,p4,p5,p6,p71,p8,p9,p58,p10,p11,p12,p13,p60,p73,p14,p15,p16,p17,p18,p19,p21,p22,p23,p24,p26,p56,p28,p29,p30,p31,p59,p32,p33,p34,p36,p37,p72,p38,p42,p44,p45,p47,p48,p49,p50,p51,p52,p67,p53,p54,p55,p70">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x">
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="finite(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="¬components[{Pat}]=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container⊆containers"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="finite(P)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∼∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="P=components[{Pat}]"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="containers;containers⊆containers"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ran(new_components)∩ran(containers)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="ran(new_components)∩ran(container)=(∅ ⦂ ℙ(Component))"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="finite(components[{Pat}])"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="Pat∈dom(components)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst_containers_dom/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="" org.eventb.core.psManual="true">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Dom. with Comp. rewrites in hyp (dom(inst_components) ◁ container)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p17"/>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(inst_components) ◁ (container;inst_components)⊆inst_components;container">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.domCompRewrites"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst_components/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="apply_pattern/inst_containers/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/>
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/>
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/>
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/>
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_min/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in goal" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="">
<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="remove ¬ in goal" org.eventb.core.prGoal="p4" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5">
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬(∀C⦂ℙ(Component×Component)·¬(container⊆C∧C;C⊆C))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="{C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C ∣ C}≠(∅ ⦂ ℙ(ℙ(Component×Component)))"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·¬¬(container⊆C∧C;C⊆C)"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="cont_min/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps="">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬(∀C·¬(container⊆C∧C;C⊆C))" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ¬ in ¬¬(container⊆[[0]]∧[[0]];[[0]]⊆[[0]])" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5"/>
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p7"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃C·container⊆C∧C;C⊆C)" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8,p9">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prHypAction>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p8,p9"/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/>
</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.prRule>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pattern⊆Model">
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst≠Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="¬(∀C⦂ℙ(Component×Component)·¬(container⊆C∧C;C⊆C))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container⊆C">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="C;C⊆C">
<org.eventb.core.prIdent name="C" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="{C⦂ℙ(Component×Component)·container⊆C∧C;C⊆C ∣ C}≠(∅ ⦂ ℙ(ℙ(Component×Component)))">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∃C⦂ℙ(Component×Component)·¬¬(container⊆C∧C;C⊆C)">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Inst=Mdl">
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components∈Model ↔ Component">
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.rn"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
</org.eventb.core.prProof>
</org.eventb.core.prFile>