Files

32664 lines
2.8 MiB
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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" org.eventb.core.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="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="HIDE2" org.eventb.core.prHyps="p40"/>
<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,p10,p36,p5,p8,p12,p3,p34,p20,p28,p4,p29,p17,p19,p9,p25,p6,p35,p1,p22,p15,p14,p7,p18,p27,p2,p30,p26,p11,p32,p16,p13,p24,p23,p31,p37">
<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="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="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="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="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<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="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="p40" org.eventb.core.predicate="containers∈Component ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="components[{Pat}] dom(container)⊆({Inst} ⩤ components)[{Pat}]"/>
<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="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/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,p5,p6,p7,p8,p9,p10" org.eventb.core.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="p11,p12,p13,p14,p15,p16,p17,p10,p18,p3,p19,p20,p21,p22,p23,p24,p5,p25,p26,p27,p1,p28,p29,p9,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,p9,p10">
<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="p11" 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="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="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="p4" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/>
<org.eventb.core.prPred name="p14" 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="p15" 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="∀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="p10" org.eventb.core.predicate="components∈Component ⇸ Model"/>
<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="p3" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → "/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<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="p20" 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="p21" 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="p22" 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="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p23" 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="p24" 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="p25" 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="p26" 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="p0" org.eventb.core.predicate="container((inst_componentsnew_components);container;(inst_componentsnew_components))∈ran(components({Mdl} × ran(new_components))) ⇸ ran(components({Mdl} × ran(new_components)))"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/>
<org.eventb.core.prPred name="p27" 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="p28" 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="p7" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p29" 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="p9" 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="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/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" org.eventb.core.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,p28,p29,p5,p6,p7,p8,p9,p11,p30,p12,p13,p15,p17,p31,p19,p20,p21,p22,p24,p25,p26,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="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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.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="p28" 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="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="p11" 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="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="container[dom(inst_components)]⊆dom(inst_components)"/>
<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="new_components∈components[{Inst}] dom(inst_components) ↣ Component ran(components)"/>
<org.eventb.core.prPred name="p19" 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="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="p23" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<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="p26" org.eventb.core.predicate="Inst∈Model Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(components({Mdl} × ran(new_components)));(container((inst_componentsnew_components);container;(inst_componentsnew_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_componentsnew_components);container;(inst_componentsnew_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_componentsnew_components);container;(inst_componentsnew_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_componentsnew_components);container;(inst_componentsnew_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_componentsnew_components);container;(inst_componentsnew_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="p0" 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="hyp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p0"/>
<org.eventb.core.prIdent name="todo" org.eventb.core.type="(×Component)"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="finite(todo)"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/>
</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 ↦ ae0ae}∈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_cran(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_cran(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_cran(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_cran(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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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 ‥ ic_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_cran(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_cran(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_cran(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_cran(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_cran(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_cran(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_cran(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_cran(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" org.eventb.core.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="HIDE2" org.eventb.core.prHyps="p10"/>
<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,p3,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="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_unfold_c" 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="p10" 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="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="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{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="p5" org.eventb.core.predicate="to_unfold_c⊆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.prPred name="p0" org.eventb.core.predicate="to_unfold_c⊆(components({Mdl} × ran(new_components)))[{Pat}]"/>
<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_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_multiplicityc_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_othersae∈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="" org.eventb.core.prGoal="p0" org.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.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="p27,p3,p11,p29,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="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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.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="height" 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="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="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀c⦂Component·c∈components[{Pat}]∩ran(container)⇒height(c)=1+max(height[container[{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="height∈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="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="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="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="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="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="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ (Component×Component))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<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="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="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="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="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="c_mult" org.eventb.core.type="(Component×)"/>
<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="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="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_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_indexnew_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_indexnew_c)⇒(c_indexnew_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,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.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="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="p37" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="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="p38" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p39"/>
<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="p40">
<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="p40" 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="simplification rewrites" org.eventb.core.prGoal="p41" 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="∧ goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" 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,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,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="p44">
<org.eventb.core.prRule name="r6" 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="p45">
<org.eventb.core.prRule name="r7" 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="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Mdl" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p46">
<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="r9" 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="p45">
<org.eventb.core.prRule name="r7" 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="p49">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p31,p23,p17,p6,p46,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="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="p49">
<org.eventb.core.prRule name="r8" 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="p48" org.eventb.core.prHyps="p49">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite of relational image of a function" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r7" 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="p51">
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="p23"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r7" 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="p53">
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/>
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45">
<org.eventb.core.prRule name="r7" 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="p53">
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p53"/>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p54">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP (trivial)" 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="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.prExprRef name=".expr" org.eventb.core.prRef="e2"/>
</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="p49"/>
</org.eventb.core.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="r9" 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="p45">
<org.eventb.core.prRule name="r7" 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="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="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p55,p31,p23,p17,p6,p13">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" 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="p56">
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with ({Mdl} × ran(new_components))[{m}]=∅" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p56">
<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="p45">
<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="r7" 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.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.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.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_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="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="p35" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="finite(({Mdl} × ran(new_components))[{Mdl}])"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈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="p38" org.eventb.core.predicate="∃f⦂(Component×Component)·∧container⊆f∧f;f⊆f∧(id ⦂ (Component×Component))∩f=(∅ ⦂ (Component×Component))"/>
<org.eventb.core.prPred name="p41" 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="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="container[dom(inst_components)]⊆dom(inst_components)"/>
<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="finite(components[{m}])">
<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="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ (Component×Component))"/>
<org.eventb.core.prPred name="p42" 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="p28" 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="Mdl∈Model Pattern"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p44" 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="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/>
<org.eventb.core.prPred name="p57" 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="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="p37" 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="p8" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)&gt;0"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="new_components∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="components∈Component ⇸ Model"/>
<org.eventb.core.prPred name="p55" 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="p49" org.eventb.core.predicate="ran(new_components)=new_components[components[{Inst}] dom(inst_components)]"/>
<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="p53" org.eventb.core.predicate="finite(components[{Inst}])"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate=""/>
<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="new_components∈components[{Inst}] dom(inst_components) ↣ Component ran(components)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components[{Inst}] dom(inst_components)⊆components[{Inst}]"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="finite(new_components[components[{Inst}] dom(inst_components)])"/>
<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="p52" org.eventb.core.predicate="finite(components[{Inst}] dom(inst_components))"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="finite(∅ ⦂ (Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/>
<org.eventb.core.prPred name="p39" 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="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="p48" org.eventb.core.predicate="finite(ran(new_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="p30" org.eventb.core.predicate="∀c⦂Component·finite(container[{c}])"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="components∈Model ↔ Component"/>
<org.eventb.core.prPred name="p56" 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="e1" org.eventb.core.expression="Inst"/>
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="Component ⇸ Component"/>
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="components[{Inst}]"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.doCase"/>
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.finiteFunRelImg"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.relImgUnionLeftRewrites"/>
<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.eq:1"/>
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/>
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/>
<org.eventb.core.prReas name="r13" 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="r10" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
<org.eventb.core.prReas name="r15" 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.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="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×))∈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.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/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" org.eventb.core.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="HIDE2" org.eventb.core.prHyps="p10"/>
<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,p4,p5,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.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_unfold_c_in" org.eventb.core.type="(Component×Component)"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/>
<org.eventb.core.prPred name="p10" 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="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="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="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{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="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="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,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.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.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.prHypAction name="HIDE2" 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="ML" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p33,p10,p36,p5,p8,p12,p3,p34,p20,p28,p4,p29,p17,p19,p9,p25,p6,p35,p1,p22,p15,p14,p7,p18,p27,p2,p30,p26,p11,p32,p16,p13,p24,p23,p31,p37">
<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="p41" 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="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="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="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="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<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="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="p40" org.eventb.core.predicate="containers∈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="p0" org.eventb.core.predicate="∀m⦂Model·finite(({Inst} ⩤ components)[{m}])"/>
<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="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/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="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="p3" org.eventb.core.predicate=""/>
<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="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/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,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="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p28,p29,p5,p6,p7,p8,p9,p10,p30,p12,p13,p15,p16,p17,p31,p18,p21,p22,p23,p24,p25,p26,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="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.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.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="p28" 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="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="c_multiplicity∈components[Pattern] → "/>
<org.eventb.core.prPred name="p11" 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="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="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/>
<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="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="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) pc ↦ card(inst_components[{pc}])}"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="c_mult_others∈components[{Pat}] dom(inst_components) → "/>
<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="p0" org.eventb.core.predicate="components[{Inst}] ⩤ container∈ran({Inst} ⩤ components) ⇸ ran({Inst} ⩤ components)"/>
<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="p26" org.eventb.core.predicate="Inst∈Model Pattern"/>
<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.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="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,p14,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,p8,p9,p10,p11,p12,p13,p15,p44,p16,p17,p48,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="p49,p50,p51">
<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="p49,p50,p51"/>
<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,p8,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.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.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p52" 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.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="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="p49" 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="p48" 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="p50" 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="p52" 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="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="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="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="p51" 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="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="p17" 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="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="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="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="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.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/>
<org.eventb.core.prReas name="r4" 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.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/>
<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.autoRewritesL4:0"/>
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
</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,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="∀ goal (frees m)" 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="Model"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in 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="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.prRule name="r5" 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="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="p16">
<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="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="p20">
<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="p20" org.eventb.core.prHyps="">
<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="generalized MP" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p7,p1,p2,p3">
<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="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="p23">
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p8,p13,p4,p5">
<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="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.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="p26" org.eventb.core.prHyps="p25">
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p6">
<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="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/>
<org.eventb.core.prRule name="r5" 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="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="p27">
<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="p27" org.eventb.core.prHyps="p27"/>
</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="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>