<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.prFile version="1">
<org.eventb.core.prProof name="f_acycl/WD" 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" org.eventb.core.prSets="Component,Link,Model,Port">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" 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="p20,p21"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p20,p21"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Link,Transpose,Identity,Shift,First,Rotate))" 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="p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="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="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34,p35,p36"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<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="p39"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p40"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p41"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p42"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p43"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p44"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p45"/>
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47">
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p48"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p50">
<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="simplification rewrites" org.eventb.core.prGoal="p51" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52">
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p17,p13,p19,p9,p7,p1,p11,p18,p6,p12,p15,p5,p10,p16,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="p53">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p7">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p48"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p10"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p49"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p50"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p48"/>
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p50">
<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="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p17,p13,p19,p9,p7,p1,p11,p18,p6,p12,p15,p5,p10,p16,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p48,p49,p50">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="First" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Identity" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="LKind" org.eventb.core.type="ℙ(ℙ(Link))"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Rotate" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Shift" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Transpose" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components_var" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container_var" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="f_container_var" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_app" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="toy_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="toy_inp_1" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_inp_2" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_output" org.eventb.core.type="Port"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="toy_container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Link,Transpose,Identity,Shift,First,Rotate)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Transpose∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="m∈dom({safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))})">
<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="toy_app∈Component"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="(∀m⦂Model·m∈dom(container_var))∧container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Identity∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(container_var)∧container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="m∈{safety_model,toy_model}">
<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="∀m⦂Model·m∈dom(container_var)"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="safety_comp∈Component"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="¬ballot_box=safety_comp"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="toy_container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Transpose∩Identity=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Link=Transpose∪Identity∪Shift∪First∪Rotate"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="safety_model≠toy_model"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Port=IPort∪OPort"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="{safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="safety_model∈Model"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Identity∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬replicator=safety_comp"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬safety_model=toy_model"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="container_var={safety_model ↦ safety_container,toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="toy_inp_2∈IPort"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="First∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Identity∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="toy_model∈Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="toy_inp_1∈IPort"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(Port,IPort,OPort)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Shift∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="replicator∈Component"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="LKind={Transpose,Identity,Shift,First,Rotate}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Transpose∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="ballot_box∈Component"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="m∈dom(container_var)">
<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="¬replicator=ballot_box"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="toy_output∈OPort"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Shift∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Transpose∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<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.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="f_acycl/THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22" org.eventb.core.prSets="Component,Model,Port">
<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,p21,p3,p16"/>
<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">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.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="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="components_var" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container_var" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="f_container_var" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_app" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="toy_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="toy_inp_1" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_inp_2" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_output" org.eventb.core.type="Port"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="toy_container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="toy_model∈Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="safety_comp∈Component"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var∧f_container_var;f_container_var⊆f_container_var∧(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="toy_inp_1∈IPort"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(Port,IPort,OPort)"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="replicator∈Component"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="toy_app∈Component"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="toy_container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container_var={safety_model ↦ safety_container,toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="toy_inp_2∈IPort"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="ballot_box∈Component"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="safety_model≠toy_model"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="safety_model∈Model"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="toy_output∈OPort"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<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="c_multiplicity_assign /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" org.eventb.core.prSets="Component,Link,Model,Port">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" 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="p24,p25"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p24,p25"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Link,Transpose,Identity,Shift,First,Rotate))" 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="p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36"/>
<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="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p37"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p38,p39,p40"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42,p43,p44"/>
<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="p45"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p46"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p47"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p48"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p49"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p50"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p51"/>
<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="p52">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p59" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p60" 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.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="p61">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="p15">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prHyps="p55">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p20,p14,p23,p10,p8,p1,p12,p22,p7,p13,p18,p6,p11,p19,p21,p16,p15,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p53,p54,p55,p56,p57,p58,p63">
<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="p64">
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pc)" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p66">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p8">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p11" org.eventb.core.prInfHyps="p53"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p11"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p54"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p53" org.eventb.core.prInfHyps="p55"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p53"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p19">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p56"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p57"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p42,p43,p44"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with inst_components_par={safety_comp ↦ toy_app}" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p21">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p66" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p66"/>
<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="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prHyps="p55">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p56" org.eventb.core.prInfHyps="p63"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p56"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with pc=safety_comp" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p70">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p60">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p60" 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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="First" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Identity" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="LKind" org.eventb.core.type="ℙ(ℙ(Link))"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Rotate" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Shift" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Transpose" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_mult_others_par" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity_var" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components_var" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container_var" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="f_container_var" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components_par" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_app" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="toy_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="toy_inp_1" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_inp_2" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_output" org.eventb.core.type="Port"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="toy_container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Link,Transpose,Identity,Shift,First,Rotate)"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Transpose∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="pc∈dom({safety_comp ↦ toy_app})">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="toy_app∈Component"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}])"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="finite(inst_components_par[{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="Identity∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="pc=safety_comp">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="f_container_var;f_container_var⊆f_container_var"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="safety_comp∈Component"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="¬ballot_box=safety_comp"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c_multiplicity_var∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="toy_container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Transpose∩Identity=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Link=Transpose∪Identity∪Shift∪First∪Rotate"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="safety_model≠toy_model"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Port=IPort∪OPort"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="safety_model∈Model"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Identity∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="¬replicator=safety_comp"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩{replicator ↦ safety_comp,ballot_box ↦ safety_comp}=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var∧f_container_var;f_container_var⊆f_container_var∧(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="¬safety_model=toy_model"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="container_var={safety_model ↦ safety_container,toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="toy_inp_2∈IPort"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="{safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="First∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Identity∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="safety_model∈dom(c_multiplicity_var)"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="pc∈dom(inst_components_par)">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="toy_model∈Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="safety_model∈dom(c_multiplicity_var)∧c_multiplicity_var∈Model ⇸ ℙ(Component × ℤ)∧(∀pc⦂Component·pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}]))"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀m⦂Model·{safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}(m)⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="toy_inp_1∈IPort"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(Port,IPort,OPort)"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Shift∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="replicator∈Component"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="{replicator ↦ safety_comp,ballot_box ↦ safety_comp};{replicator ↦ safety_comp,ballot_box ↦ safety_comp}⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="LKind={Transpose,Identity,Shift,First,Rotate}"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="finite({safety_comp ↦ toy_app}[{safety_comp}])"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Transpose∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="ballot_box∈Component"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="¬replicator=ballot_box"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="toy_output∈OPort"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst_components_par={safety_comp ↦ toy_app}"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="safety_model∈dom({safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}})"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Shift∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="finite({safety_comp ↦ toy_app}[{pc}])">
<org.eventb.core.prIdent name="pc" org.eventb.core.type="Component"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Transpose∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/>
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/>
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/>
<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.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="c_multiplicity_assign /THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prHyps="p0,p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p7,p4,p0,p5,p2,p8,p9,p10,p11"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prHyps="p0,p1,p2,p3,p4,p5,p6">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.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="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="c_multiplicity_var∈Model ⇸ ℙ(Component × ℤ)">
<org.eventb.core.prIdent name="c_multiplicity_var" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(Port,IPort,OPort)">
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}])">
<org.eventb.core.prIdent name="inst_components_par" org.eventb.core.type="ℙ(Component×Component)"/>
</org.eventb.core.prPred>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="safety_model∈dom(c_multiplicity_var)">
<org.eventb.core.prIdent name="c_multiplicity_var" 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="r1" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_unfold_c_var /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" org.eventb.core.prSets="Component,Link,Model,Port">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" 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,p30"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p29,p30"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Link,Transpose,Identity,Shift,First,Rotate))" 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="p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41"/>
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41"/>
<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="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p42"/>
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p43,p44,p45"/>
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46"/>
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47,p48,p49"/>
<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="p50"/>
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/>
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p52"/>
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p53"/>
<org.eventb.core.prHypAction name="HIDE4" org.eventb.core.prHyps="p54"/>
<org.eventb.core.prHypAction name="HIDE5" org.eventb.core.prHyps="p55"/>
<org.eventb.core.prHypAction name="HIDE6" org.eventb.core.prHyps="p56"/>
<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="p57">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p58"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}" org.eventb.core.prGoal="p57" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p61">
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p61" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" 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.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p63">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p58"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p5">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with inst_components_par={safety_comp ↦ toy_app}" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p70"/>
<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="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p64" org.eventb.core.prHyps="p26,p10,p28,p20,p6,p1,p22,p13,p18,p9,p25,p5,p8,p12,p27,p23,p11,p2,p14,p17,p7,p21,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p58,p59,p60,p65,p66,p67,p69,p70,p72,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p74">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p58"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with inst_components_par={safety_comp ↦ toy_app}" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p70"/>
<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="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p75">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p75" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62">
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""/>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.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="p76">
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p6">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p8" org.eventb.core.prInfHyps="p58"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p8"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with toy_container=∅" org.eventb.core.prHyps="p22">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p1" org.eventb.core.prInfHyps="p59"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p60"/>
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p1,p58"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}" org.eventb.core.prHyps="p12">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p65"/>
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p48" org.eventb.core.prInfHyps="p66"/>
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p49" org.eventb.core.prInfHyps="p67"/>
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p47,p48,p49"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with inst_components_par={safety_comp ↦ toy_app}" org.eventb.core.prHyps="p27">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p2" org.eventb.core.prInfHyps="p68"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p2"/>
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}" org.eventb.core.prHyps="p23">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p69" org.eventb.core.prInfHyps="p70"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p69"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}" org.eventb.core.prHyps="p11">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p71"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p70"/>
<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="p71" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p72"/>
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ ∅}" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p60">
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77">
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p65" org.eventb.core.prInfHyps="p73"/>
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p65"/>
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p26,p10,p28,p20,p6,p1,p22,p13,p18,p9,p25,p5,p8,p12,p27,p23,p11,p2,p14,p17,p7,p21,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p58,p59,p60,p65,p66,p67,p69,p70,p72,p73">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="First" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Identity" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="LKind" org.eventb.core.type="ℙ(ℙ(Link))"/>
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="Rotate" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Shift" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="Transpose" org.eventb.core.type="ℙ(Link)"/>
<org.eventb.core.prIdent name="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_mult_others_par" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity_var" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components_var" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container_var" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="f_container_var" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components_par" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_var" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="toy_app" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="toy_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="toy_inp_1" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_inp_2" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_output" org.eventb.core.type="Port"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="toy_container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Link,Transpose,Identity,Shift,First,Rotate)"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Transpose∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="toy_app∈Component"/>
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="safety_model∈dom(container_var)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}])"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Identity∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="c_multiplicity_var(safety_model)={replicator ↦ 3,ballot_box ↦ 1} {pc⦂Component·pc=safety_comp ∣ pc ↦ card({safety_comp ↦ toy_app}[{pc}])}"/>
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="{safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}={replicator ↦ 3,ballot_box ↦ 1} {pc⦂Component·pc=safety_comp ∣ pc ↦ card({safety_comp ↦ toy_app}[{pc}])}"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="{safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}(safety_model)={replicator ↦ 3,ballot_box ↦ 1} {pc⦂Component·pc=safety_comp ∣ pc ↦ card({safety_comp ↦ toy_app}[{pc}])}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="f_container_var;f_container_var⊆f_container_var"/>
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="safety_comp∈Component"/>
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="¬ballot_box=safety_comp"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_multiplicity_var∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c_var={safety_comp}"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="toy_container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Transpose∩Identity=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Link=Transpose∪Identity∪Shift∪First∪Rotate"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="safety_model≠toy_model"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Port=IPort∪OPort"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/>
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="{safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="safety_model∈Model"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Identity∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="¬replicator=safety_comp"/>
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="¬Inst=Mdl"/>
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩{replicator ↦ safety_comp,ballot_box ↦ safety_comp}=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity_var(safety_model)=c_mult_others_par {pc⦂Component·pc∈dom(inst_components_par) ∣ pc ↦ card(inst_components_par[{pc}])}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var∧f_container_var;f_container_var⊆f_container_var∧(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}"/>
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="components_var∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="¬safety_model=toy_model"/>
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="container_var={safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="container_var={safety_model ↦ safety_container,toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="toy_inp_2∈IPort"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="safety_model∈dom(components_var)∧components_var∈Model ⇸ ℙ(Component)∧safety_model∈dom(container_var)∧container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}"/>
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="safety_model∈dom({safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}})"/>
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(∅ ⦂ ℙ(Component×Component))∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="{safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="c_multiplicity_var(safety_model)=c_mult_others_par {pc⦂Component·pc∈dom({safety_comp ↦ toy_app}) ∣ pc ↦ card({safety_comp ↦ toy_app}[{pc}])}"/>
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="First∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Identity∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="safety_model∈dom({safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))})"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="safety_model∈dom(c_multiplicity_var)"/>
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="toy_model∈Model"/>
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var"/>
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="⊤"/>
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀m⦂Model·{safety_model ↦ {replicator ↦ safety_comp,ballot_box ↦ safety_comp},toy_model ↦ (∅ ⦂ ℙ(Component×Component))}(m)⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="safety_model∈dom(components_var)"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="toy_inp_1∈IPort"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="partition(Port,IPort,OPort)"/>
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Shift∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="replicator∈Component"/>
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="{replicator ↦ safety_comp,ballot_box ↦ safety_comp};{replicator ↦ safety_comp,ballot_box ↦ safety_comp}⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="LKind={Transpose,Identity,Shift,First,Rotate}"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Transpose∩Shift=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="ballot_box∈Component"/>
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬replicator=ballot_box"/>
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆{replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="toy_output∈OPort"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="inst_components_par={safety_comp ↦ toy_app}"/>
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Shift∩Rotate=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_multiplicity_var(safety_model)=c_mult_others_par {pc⦂Component·pc=safety_comp ∣ pc ↦ card({safety_comp ↦ toy_app}[{pc}])}"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Transpose∩First=(∅ ⦂ ℙ(Link))"/>
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/>
<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="com.clearsy.atelierb.provers.core.externalML:1"/>
<org.eventb.core.prReas name="r5" 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="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/>
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/>
</org.eventb.core.prProof>
<org.eventb.core.prProof name="to_unfold_c_var /THM" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37" org.eventb.core.prSets="Component,Model,Port">
<org.eventb.core.lang name="L"/>
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps="">
<org.eventb.core.prAnte name="'">
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3,p36,p14,p37,p23,p26,p18,p25,p11,p22,p6,p10,p7"/>
<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="p27,p30,p20,p21,p8,p1,p29,p33,p19,p32,p17,p9,p24,p13,p34,p5,p12,p16,p4,p35,p31,p15,p2,p28,p3,p36,p14,p37,p23,p26,p18,p25,p11,p22,p6,p10,p7">
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/>
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/>
</org.eventb.core.prRule>
</org.eventb.core.prAnte>
</org.eventb.core.prRule>
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/>
<org.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="OPort" org.eventb.core.type="ℙ(Port)"/>
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/>
<org.eventb.core.prIdent name="ballot_box" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="c_mult_others_par" org.eventb.core.type="ℙ(Component×ℤ)"/>
<org.eventb.core.prIdent name="c_multiplicity_var" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/>
<org.eventb.core.prIdent name="components_var" org.eventb.core.type="ℙ(Model×ℙ(Component))"/>
<org.eventb.core.prIdent name="container_var" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/>
<org.eventb.core.prIdent name="f_container_var" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="inst_components_par" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="replicator" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_comp" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="safety_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="safety_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="to_unfold_c_var" org.eventb.core.type="ℙ(Component)"/>
<org.eventb.core.prIdent name="toy_app" org.eventb.core.type="Component"/>
<org.eventb.core.prIdent name="toy_container" org.eventb.core.type="ℙ(Component×Component)"/>
<org.eventb.core.prIdent name="toy_inp_1" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_inp_2" org.eventb.core.type="Port"/>
<org.eventb.core.prIdent name="toy_model" org.eventb.core.type="Model"/>
<org.eventb.core.prIdent name="toy_output" org.eventb.core.type="Port"/>
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="toy_container∈Component ⇸ Component"/>
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity_var(safety_model)=c_mult_others_par {pc⦂Component·pc∈dom(inst_components_par) ∣ pc ↦ card(inst_components_par[{pc}])}"/>
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pattern⊆Model"/>
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·container_var(m)⊆f_container_var∧f_container_var;f_container_var⊆f_container_var∧(id ⦂ ℙ(Component×Component))∩f_container_var=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="components_var={safety_model ↦ {replicator,ballot_box,safety_comp},toy_model ↦ {toy_app}}"/>
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components_var∈Model ⇸ ℙ(Component)"/>
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="container_var∈Model ⇸ ℙ(Component × Component)"/>
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="safety_container={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="toy_app∈Component"/>
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="safety_model∈dom(container_var)"/>
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀pc⦂Component·pc∈dom(inst_components_par)⇒finite(inst_components_par[{pc}])"/>
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="container_var={safety_model ↦ safety_container,toy_model ↦ toy_container}"/>
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="toy_inp_2∈IPort"/>
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/>
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="c_multiplicity_var={safety_model ↦ {safety_comp ↦ 1,replicator ↦ 3,ballot_box ↦ 1}}"/>
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="f_container_var={replicator ↦ safety_comp,ballot_box ↦ safety_comp}"/>
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Model={safety_model,toy_model}"/>
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="safety_model∈dom(c_multiplicity_var)"/>
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="toy_model∈Model"/>
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="safety_comp∈Component"/>
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="replicator≠ballot_box∧replicator≠safety_comp∧ballot_box≠safety_comp"/>
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="safety_model∈dom(components_var)"/>
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/>
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="toy_inp_1∈IPort"/>
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="c_multiplicity_var∈Model ⇸ ℙ(Component × ℤ)"/>
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="partition(Port,IPort,OPort)"/>
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="replicator∈Component"/>
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c_var={safety_comp}"/>
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="toy_container=(∅ ⦂ ℙ(Component×Component))"/>
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="ballot_box∈Component"/>
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_mult_others_par={replicator ↦ 3,ballot_box ↦ 1}"/>
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="safety_model≠toy_model"/>
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_c_var=components_var(safety_model) ∖ dom(container_var(safety_model))"/>
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="safety_model∈Model"/>
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="toy_output∈OPort"/>
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components_par={safety_comp ↦ toy_app}"/>
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/>
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/>
<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.prFile>