<?xml version="1.0" encoding="UTF-8"?>
<machine:Machine xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:machine="http://emf.eventb.org/models/core/machine/2014" name="mLink">
  <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
    <details key="configuration" value="org.eventb.core.fwd;de.prob.units.mchBase;org.eventb.codegen.ui.cgConfig"/>
    <details key="name" value="mLink"/>
  </annotations>
  <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
    <details key="refines mPort" value="_a6WF0MOWEeeQteb5bDCu6g"/>
    <details key="sees cLink" value="_a6WF0cOWEeeQteb5bDCu6g"/>
  </annotations>
  <attributes key="org.eventb.texttools.text_lastmodified">
    <value type="Long" value="ACED00057372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B02000078700000016268312F21"/>
  </attributes>
  <attributes key="org.eventb.texttools.text_representation">
    <value type="String" value="[encoded data, 11090 characters]"/>
  </attributes>
  <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Machine::mPort"/>
  <sees href="../cLink.buc#http://emf.eventb.org/models/core/context/2014::Context::cLink"/>
  <variables name="components">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWQr4_EeeN0675uvquSw"/>
      <details key="identifier" value="components"/>
    </annotations>
  </variables>
  <variables name="container">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWRL4_EeeN0675uvquSw"/>
      <details key="identifier" value="container"/>
    </annotations>
  </variables>
  <variables name="c_multiplicity">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWRb4_EeeN0675uvquSw"/>
      <details key="identifier" value="c_multiplicity"/>
    </annotations>
  </variables>
  <variables name="to_clone_c">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWRr4_EeeN0675uvquSw"/>
      <details key="identifier" value="to_clone_c"/>
    </annotations>
  </variables>
  <variables name="c_index">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_73nGMMOYEeeQteb5bDCu6g"/>
      <details key="identifier" value="c_index"/>
    </annotations>
  </variables>
  <variables name="to_unfold_c">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_0ffzsMOZEeeQteb5bDCu6g"/>
      <details key="identifier" value="to_unfold_c"/>
    </annotations>
  </variables>
  <variables name="to_unfold_c_in">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_j2NdQOGVEeeUoZak4Ibgcg"/>
      <details key="identifier" value="to_unfold_c_in"/>
    </annotations>
  </variables>
  <variables name="inst2pat_c">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_j2NdQeGVEeeUoZak4Ibgcg"/>
      <details key="identifier" value="inst2pat_c"/>
    </annotations>
  </variables>
  <variables name="cProperties">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_QZUfgOTyEeemadOWCHlIvw"/>
      <details key="identifier" value="cProperties"/>
    </annotations>
  </variables>
  <variables name="ports">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_QZUfgeTyEeemadOWCHlIvw"/>
      <details key="identifier" value="ports"/>
    </annotations>
  </variables>
  <variables name="p_multiplicity">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_Z5iv0Pg-EeeeS5KQUtrGlw"/>
      <details key="identifier" value="p_multiplicity"/>
    </annotations>
  </variables>
  <variables name="p_index">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_Z5iv0fg-EeeeS5KQUtrGlw"/>
      <details key="identifier" value="p_index"/>
    </annotations>
  </variables>
  <variables name="to_unfold_p_in">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_Ajk8sPloEeeeS5KQUtrGlw"/>
      <details key="identifier" value="to_unfold_p_in"/>
    </annotations>
  </variables>
  <variables name="inst2pat_p">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_X1DEEAA3EeictLZKwQfI0A"/>
      <details key="identifier" value="inst2pat_p"/>
    </annotations>
  </variables>
  <variables name="links">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_X1DEEQA3EeictLZKwQfI0A"/>
      <details key="identifier" value="links"/>
    </annotations>
  </variables>
  <variables name="src">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_X1DEEgA3EeictLZKwQfI0A"/>
      <details key="identifier" value="src"/>
    </annotations>
  </variables>
  <variables name="dst">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_X1DEEwA3EeictLZKwQfI0A"/>
      <details key="identifier" value="dst"/>
    </annotations>
  </variables>
  <variables name="c_links_done">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_cztlsAi3EeiFlqW-8GKglg"/>
      <details key="identifier" value="c_links_done"/>
    </annotations>
  </variables>
  <variables name="inst2pat_l">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_rQxpAAskEeigQsLVMUeRQw"/>
      <details key="identifier" value="inst2pat_l"/>
    </annotations>
  </variables>
  <invariants name="link_ty" predicate="links ∈ ran(components) ↔ Link">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWR74_EeeN0675uvquSw"/>
      <details key="label" value="link_ty"/>
    </annotations>
  </invariants>
  <invariants name="link_finite" predicate="∀c·finite(links[{c}])">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_fWSL4_EeeN0675uvquSw"/>
      <details key="label" value="link_finite"/>
    </annotations>
  </invariants>
  <invariants name="link_not_shared" predicate="links∼ ∈ Link ⇸ Component">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_f9UL4_EeeN0675uvquSw"/>
      <details key="label" value="link_not_shared"/>
    </annotations>
  </invariants>
  <invariants name="src_ty" predicate="src ∈ ran(links) → ran(ports)">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_f9Ub4_EeeN0675uvquSw"/>
      <details key="label" value="src_ty"/>
    </annotations>
  </invariants>
  <invariants name="dst_ty" predicate="dst ∈ ran(links) → ran(ports)">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_S_f9Ur4_EeeN0675uvquSw"/>
      <details key="label" value="dst_ty"/>
    </annotations>
  </invariants>
  <invariants name="link_cii" predicate="links; ((src ⊗ dst) ▷ (IPort × IPort)) ⊆ ports ⊗ (container∼; ports)">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_0ffzssOZEeeQteb5bDCu6g"/>
      <details key="label" value="link_cii"/>
    </annotations>
  </invariants>
  <invariants name="link_coi" predicate="links; ((src ⊗ dst) ▷ (OPort × IPort)) ⊆ (container∼;ports) ⊗ (container∼; ports)">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_Z5iv0vg-EeeeS5KQUtrGlw"/>
      <details key="label" value="link_coi"/>
    </annotations>
  </invariants>
  <invariants name="link_coo" predicate="links; ((src ⊗ dst) ▷ (OPort × OPort)) ⊆ (container∼; ports) ⊗ ports">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_GNeQ0_qOEeectLZKwQfI0A"/>
      <details key="label" value="link_coo"/>
    </annotations>
  </invariants>
  <invariants name="link_cio" predicate="links; ((src ⊗ dst) ▷ (IPort × OPort)) ⊆ ports ⊗ ports">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_GNe34PqOEeectLZKwQfI0A"/>
      <details key="label" value="link_cio"/>
    </annotations>
  </invariants>
  <invariants name="transp_src" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(src(l)) = c_multiplicity(ports∼(dst(l)))">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_69ZZAPq0EeectLZKwQfI0A"/>
      <details key="label" value="transp_src"/>
    </annotations>
  </invariants>
  <invariants name="transp_dst" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(dst(l)) = c_multiplicity(ports∼(src(l)))">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_X1DEFAA3EeictLZKwQfI0A"/>
      <details key="label" value="transp_dst"/>
    </annotations>
  </invariants>
  <invariants name="c_links_done" predicate="c_links_done ⊆ (components;links)[{Pat}] × components[{Inst}]">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_ocRYQAbKEeiFlqW-8GKglg"/>
      <details key="label" value="c_links_done"/>
    </annotations>
  </invariants>
  <invariants name="inst2pat_l_ty" predicate="inst2pat_l ∈ (components;links)[{Inst}] → (components;links)[{Pat}]">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_ocRYQQbKEeiFlqW-8GKglg"/>
      <details key="label" value="inst2pat_l_ty"/>
    </annotations>
  </invariants>
  <invariants name="inst2pat_l_preserve_type" predicate="∀K·K∈LKind ⇒ inst2pat_l[K] ⊆ K">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_cztlsQi3EeiFlqW-8GKglg"/>
      <details key="label" value="inst2pat_l_preserve_type"/>
    </annotations>
  </invariants>
  <invariants name="inst2pat_l_src" predicate="inst2pat_l;src = src;inst2pat_p">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_rQxpAQskEeigQsLVMUeRQw"/>
      <details key="label" value="inst2pat_l_src"/>
    </annotations>
  </invariants>
  <invariants name="inst2pat_l_dst" predicate="inst2pat_l;dst = dst;inst2pat_p">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_rQxpAgskEeigQsLVMUeRQw"/>
      <details key="label" value="inst2pat_l_dst"/>
    </annotations>
  </invariants>
  <invariants name="transp_correct1" predicate="∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(src(l)) = c_index(ports∼(dst(l)))">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_EviiYAslEeigQsLVMUeRQw"/>
      <details key="label" value="transp_correct1"/>
    </annotations>
  </invariants>
  <invariants name="transp_correct2" predicate="∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(dst(l)) = c_index(ports∼(src(l)))">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_EviiYQslEeigQsLVMUeRQw"/>
      <details key="label" value="transp_correct2"/>
    </annotations>
  </invariants>
  <variant expression="((components;links)[{Pat}] × components[{Inst}]) ∖ c_links_done">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_K8id4Ai5EeiFlqW-8GKglg"/>
    </annotations>
  </variant>
  <events name="instanciate_pattern" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="'"/>
      <details key="label" value="instanciate_pattern"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines instanciate_pattern" value="_ypF-0PlnEeeeS5KQUtrGlw"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.instanciate_pattern"/>
    <guards name="transp_ctr1" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=card(inst_components[{ports∼(dst(l))}])">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_eIJL4_EeeN0675uvquSw"/>
        <details key="label" value="transp_ctr1"/>
      </annotations>
    </guards>
    <guards name="transp_ctr2" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=c_mult_others(ports∼(dst(l)))">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_eIJb4_EeeN0675uvquSw"/>
        <details key="label" value="transp_ctr2"/>
      </annotations>
    </guards>
    <guards name="transp_ctr3" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=card(inst_components[{ports∼(src(l))}])">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_eIJr4_EeeN0675uvquSw"/>
        <details key="label" value="transp_ctr3"/>
      </annotations>
    </guards>
    <guards name="transp_ctr4" predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=c_mult_others(ports∼(src(l)))">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_eIJ74_EeeN0675uvquSw"/>
        <details key="label" value="transp_ctr4"/>
      </annotations>
    </guards>
    <actions name="links" action="links ≔ components[{Inst}] ⩤ links">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_evNr4_EeeN0675uvquSw"/>
        <details key="label" value="links"/>
      </annotations>
    </actions>
    <actions name="src" action="src ≔ (components;links)[{Inst}] ⩤ src">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_oe6yMMOjEeeQteb5bDCu6g"/>
        <details key="label" value="src"/>
      </annotations>
    </actions>
    <actions name="dst" action="dst ≔ (components;links)[{Inst}] ⩤ dst">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_oe6yMcOjEeeQteb5bDCu6g"/>
        <details key="label" value="dst"/>
      </annotations>
    </actions>
    <actions name="inst2pat_l" action="inst2pat_l ≔ ∅">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_0IWfoAK-EeiAPf1wPUl3Gw"/>
        <details key="label" value="inst2pat_l"/>
      </annotations>
    </actions>
    <actions name="c_links_done" action="c_links_done ≔ ∅">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_SwNs4ALXEei9ocE08JsPSw"/>
        <details key="label" value="c_links_done"/>
      </annotations>
    </actions>
  </events>
  <events name="unfold_root_c" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_JZbnAOGWEeeUoZak4Ibgcg"/>
      <details key="label" value="unfold_root_c"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines unfold_root_c" value="_7XcAsAK3EeiAPf1wPUl3Gw"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.unfold_root_c"/>
  </events>
  <events name="unfold_p" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_QZUfguTyEeemadOWCHlIvw"/>
      <details key="label" value="unfold_p"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines unfold_p" value="_-RPi0P06Eees7pYemx4WBQ"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.unfold_p"/>
  </events>
  <events name="clone_c" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_QZVGk-TyEeemadOWCHlIvw"/>
      <details key="label" value="clone_c"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines clone_c" value="_-RQJ4P06Eees7pYemx4WBQ"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.clone_c"/>
  </events>
  <events name="unfold_node_c" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_H7W2gPg_EeeeS5KQUtrGlw"/>
      <details key="label" value="unfold_node_c"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines unfold_node_c" value="_7XlKoAK3EeiAPf1wPUl3Gw"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.unfold_node_c"/>
  </events>
  <events comment="between 2 subcomponents" name="unfold_node_link_oi_Transpose" convergence="convergent" extended="false">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_ypJCIflnEeeeS5KQUtrGlw"/>
      <details key="label" value="unfold_node_link_oi_Transpose"/>
      <details key="comment" value="between 2 subcomponents"/>
    </annotations>
    <parameters name="spi">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_dhEr4_EeeN0675uvquSw"/>
        <details key="identifier" value="spi"/>
      </annotations>
    </parameters>
    <parameters name="sci">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_S_eIIL4_EeeN0675uvquSw"/>
        <details key="identifier" value="sci"/>
      </annotations>
    </parameters>
    <parameters name="dpi">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_JZbnAuGWEeeUoZak4Ibgcg"/>
        <details key="identifier" value="dpi"/>
      </annotations>
    </parameters>
    <parameters comment="source/dest ports and components in instance" name="dci">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nOhFwOGpEeeUoZak4Ibgcg"/>
        <details key="identifier" value="dci"/>
        <details key="comment" value="source/dest ports and components in instance"/>
      </annotations>
    </parameters>
    <parameters name="l">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_RYtJ0OT7EeemadOWCHlIvw"/>
        <details key="identifier" value="l"/>
      </annotations>
    </parameters>
    <parameters name="new_l">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nHIsIARrEei9ocE08JsPSw"/>
        <details key="identifier" value="new_l"/>
      </annotations>
    </parameters>
    <parameters comment="container" name="c">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nHJTMARrEei9ocE08JsPSw"/>
        <details key="identifier" value="c"/>
        <details key="comment" value="container"/>
      </annotations>
    </parameters>
    <guards name="l_ty" predicate="l ∈ (components;links)[{Pat}] ∩ Transpose">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_JZbnBOGWEeeUoZak4Ibgcg"/>
        <details key="label" value="l_ty"/>
      </annotations>
    </guards>
    <guards name="src_o" predicate="src(l) ∈ OPort">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nOhFweGpEeeUoZak4Ibgcg"/>
        <details key="label" value="src_o"/>
      </annotations>
    </guards>
    <guards name="dst_i" predicate="dst(l) ∈ IPort">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_yq8FweGpEeeUoZak4Ibgcg"/>
        <details key="label" value="dst_i"/>
      </annotations>
    </guards>
    <guards name="c" predicate="c ∈ components[{Inst}] ∩ dom(inst2pat_c)">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_3EQ2ceGpEeeUoZak4Ibgcg"/>
        <details key="label" value="c"/>
      </annotations>
    </guards>
    <guards name="not_done" predicate="l↦c ∉ c_links_done">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_RYtJ0uT7EeemadOWCHlIvw"/>
        <details key="label" value="not_done"/>
      </annotations>
    </guards>
    <guards name="sci" predicate="sci ∈ 1‥c_multiplicity(ports∼(src(l))) ↣ container∼[{c}]">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_RYtJ0-T7EeemadOWCHlIvw"/>
        <details key="label" value="sci"/>
      </annotations>
    </guards>
    <guards name="sci_ctr" predicate="inst2pat_c[ran(sci)] ⊆ {ports∼(src(l))}">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_RYtJ1OT7EeemadOWCHlIvw"/>
        <details key="label" value="sci_ctr"/>
      </annotations>
    </guards>
    <guards name="sci_c_index" predicate="sci;c_index = id">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_RYtJ1eT7EeemadOWCHlIvw"/>
        <details key="label" value="sci_c_index"/>
      </annotations>
    </guards>
    <guards name="dci" predicate="dci ∈ 1‥c_multiplicity(ports∼(dst(l))) ↣ container∼[{c}]">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_WfAcMAK-EeiAPf1wPUl3Gw"/>
        <details key="label" value="dci"/>
      </annotations>
    </guards>
    <guards name="dci_ctr" predicate="inst2pat_c[ran(dci)] ⊆ {ports∼(dst(l))}">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nHJTNQRrEei9ocE08JsPSw"/>
        <details key="label" value="dci_ctr"/>
      </annotations>
    </guards>
    <guards name="dci_c_index" predicate="dci;c_index = id">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_DdBJsAc3EeiFlqW-8GKglg"/>
        <details key="label" value="dci_c_index"/>
      </annotations>
    </guards>
    <guards name="spi_ty" predicate="spi ∈ ran(sci) → (1‥p_multiplicity(src(l)) ↣ inst2pat_p∼[{src(l)}])">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_70QzIAc3EeiFlqW-8GKglg"/>
        <details key="label" value="spi_ty"/>
      </annotations>
    </guards>
    <guards name="spi_ctr" predicate="∀ci·ci∈ran(sci) ⇒ spi(ci) ∈ 1‥p_multiplicity(src(l)) ↣ ports[{ci}] ∩ OPort">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_6bPz8AdGEeiFlqW-8GKglg"/>
        <details key="label" value="spi_ctr"/>
      </annotations>
    </guards>
    <guards name="spi_p_index" predicate="∀ci·ci∈ran(sci) ⇒ spi(ci);p_index = id">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_6bPz8QdGEeiFlqW-8GKglg"/>
        <details key="label" value="spi_p_index"/>
      </annotations>
    </guards>
    <guards name="dpi_ty" predicate="dpi ∈ ran(dci) → (1‥p_multiplicity(dst(l)) ↣ inst2pat_p∼[{dst(l)}])">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nxuuQQi-EeiFlqW-8GKglg"/>
        <details key="label" value="dpi_ty"/>
      </annotations>
    </guards>
    <guards name="dpi_ctr" predicate="∀ci·ci∈ran(dci) ⇒ dpi(ci) ∈ 1‥p_multiplicity(dst(l)) ↣ ports[{ci}] ∩ IPort">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_quOpsAjAEeiFlqW-8GKglg"/>
        <details key="label" value="dpi_ctr"/>
      </annotations>
    </guards>
    <guards name="dpi_p_index" predicate="∀ci·ci∈ran(dci) ⇒ dpi(ci);p_index = id">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_BL1LoAkjEeiFlqW-8GKglg"/>
        <details key="label" value="dpi_p_index"/>
      </annotations>
    </guards>
    <guards name="new_l_ty" predicate="new_l ∈ 1‥p_multiplicity(src(l)) × 1‥c_multiplicity(ports∼(src(l))) ↣ Transpose ∖ ran(links)">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_BL1ysAkjEeiFlqW-8GKglg"/>
        <details key="label" value="new_l_ty"/>
      </annotations>
    </guards>
    <actions name="links" action="links ≔ links ∪ ({c} × ran(new_l))">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_ov6eYALXEei9ocE08JsPSw"/>
        <details key="label" value="links"/>
      </annotations>
    </actions>
    <actions name="nsrc" action="src ≔ src ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ spi(sci(ic))(ip)}">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_ztHbMAaaEeiFlqW-8GKglg"/>
        <details key="label" value="nsrc"/>
      </annotations>
    </actions>
    <actions name="ndst" action="dst ≔ dst ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ dpi(dci(ip))(ic)}">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_1ZIboAabEeiFlqW-8GKglg"/>
        <details key="label" value="ndst"/>
      </annotations>
    </actions>
    <actions name="inst2pat_l" action="inst2pat_l ≔ inst2pat_l ∪ (ran(new_l) × {l})">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_1ZIboQabEeiFlqW-8GKglg"/>
        <details key="label" value="inst2pat_l"/>
      </annotations>
    </actions>
    <actions name="c_links_done" action="c_links_done ≔ c_links_done ∪ {l↦c}">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_czs-oAi3EeiFlqW-8GKglg"/>
        <details key="label" value="c_links_done"/>
      </annotations>
    </actions>
  </events>
  <events name="apply_pattern" extended="true">
    <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
      <details key="name" value="_u6P4gAK9EeiAPf1wPUl3Gw"/>
      <details key="label" value="apply_pattern"/>
    </annotations>
    <annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
      <details key="refines apply_pattern" value="_u6P4gQK9EeiAPf1wPUl3Gw"/>
    </annotations>
    <refines href="../mPort.bum#http://emf.eventb.org/models/core/machine/2014::Event::mPort.apply_pattern"/>
    <parameters name="inst_links">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nHJTMQRrEei9ocE08JsPSw"/>
        <details key="identifier" value="inst_links"/>
      </annotations>
    </parameters>
    <parameters name="new_links">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_nxuuQAi-EeiFlqW-8GKglg"/>
        <details key="identifier" value="new_links"/>
      </annotations>
    </parameters>
    <guards name="inst_links_ty" predicate="inst_links ∈ (components;links)[{Inst}] ⤔ (components;links)[{Mdl}]">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_Bszp0AsoEeigQsLVMUeRQw"/>
        <details key="label" value="inst_links_ty"/>
      </annotations>
    </guards>
    <guards comment="Les ports sources d'un lien instancié sont instanciés" name="inst_src" predicate="inst_links ; src ⊆ src; inst_ports">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_G8ASkAsoEeigQsLVMUeRQw"/>
        <details key="label" value="inst_src"/>
        <details key="comment" value="Les ports sources d'un lien instancié sont instanciés"/>
      </annotations>
    </guards>
    <guards comment="Les ports cibles d'un lien instancié sont instanciés" name="inst_dst" predicate="inst_links ; dst ⊆ dst; inst_ports">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_78O84AsoEeigQsLVMUeRQw"/>
        <details key="label" value="inst_dst"/>
        <details key="comment" value="Les ports cibles d'un lien instancié sont instanciés"/>
      </annotations>
    </guards>
    <guards name="nl" predicate="new_links ∈ (components;links)[{Inst}] ∖ dom(inst_links) ↣ Link ∖ ran(links)">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_78O84QsoEeigQsLVMUeRQw"/>
        <details key="label" value="nl"/>
      </annotations>
    </guards>
    <actions name="s" action="src ≔ src  (new_links∼;src;(inst_ports ∪ new_ports))">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_czuz0gi3EeiFlqW-8GKglg"/>
        <details key="label" value="s"/>
      </annotations>
    </actions>
    <actions name="d" action="dst ≔ dst  (new_links∼;dst;(inst_ports ∪ new_ports))">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_vsWoMAs_EeiJbMmmYBswhA"/>
        <details key="label" value="d"/>
      </annotations>
    </actions>
    <actions name="l" action="links ≔ links ∪ ((inst_components∪new_components)∼;links;new_links)">
      <annotations source="http:///org/eventb/core/RodinInternalAnnotations">
        <details key="name" value="_Ce3aEAtCEeiJbMmmYBswhA"/>
        <details key="label" value="l"/>
      </annotations>
    </actions>
  </events>
</machine:Machine>
