|
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|
|
<org.eventb.core.machineFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.units.mchBase;org.eventb.codegen.ui.cgConfig" org.eventb.texttools.text_lastmodified="1575026825109" org.eventb.texttools.text_representation="machine mLink refines mPort sees cLink variables components container containers c_multiplicity c_index to_unfold_c to_unfold_c_in inst2pat_c M P c_indexes cProperties ports p_multiplicity p_index to_unfold_p_in inst2pat_p links src dst c_links_done inst2pat_l invariants @link_ty links ∈ ran(components) ↔ Link @link_finite ∀c·finite(links[{c}]) @link_not_shared links∼ ∈ Link ⇸ Component @src_ty src ∈ ran(links) → ran(ports) @dst_ty dst ∈ ran(links) → ran(ports) @link_cii links; ((src ⊗ dst) ▷ (IPort × IPort)) ⊆ ports ⊗ (container∼; ports) @link_coi links; ((src ⊗ dst) ▷ (OPort × IPort)) ⊆ (container∼;ports) ⊗ (container∼; ports) @link_coo links; ((src ⊗ dst) ▷ (OPort × OPort)) ⊆ (container∼; ports) ⊗ ports @link_cio links; ((src ⊗ dst) ▷ (IPort × OPort)) ⊆ ports ⊗ ports @transp_src ∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(src(l)) = c_multiplicity(ports∼(dst(l))) @transp_dst ∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(dst(l)) = c_multiplicity(ports∼(src(l))) @c_links_done c_links_done ⊆ (components;links)[{Pat}] × components[{Inst}] @inst2pat_l_ty inst2pat_l ∈ (components;links)[{Inst}] → (components;links)[{Pat}] @inst2pat_l_preserve_type ∀K·K∈LKind ⇒ inst2pat_l[K] ⊆ K @inst2pat_l_src inst2pat_l;src = src;inst2pat_p @inst2pat_l_dst inst2pat_l;dst = dst;inst2pat_p @transp_correct1 ∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(src(l)) = c_index(ports∼(dst(l))) @transp_correct2 ∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(dst(l)) = c_index(ports∼(src(l))) variant ((components;links)[{Pat}] × components[{Inst}]) ∖ c_links_done events event instanciate_pattern extends instanciate_pattern where @transp_ctr1 ∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=card(inst_components[{ports∼(dst(l))}]) @transp_ctr2 ∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=c_mult_others(ports∼(dst(l))) @transp_ctr3 ∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=card(inst_components[{ports∼(src(l))}]) @transp_ctr4 ∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=c_mult_others(ports∼(src(l))) then @links links ≔ components[{Inst}] ⩤ links @src src ≔ (components;links)[{Inst}] ⩤ src @dst dst ≔ (components;links)[{Inst}] ⩤ dst @inst2pat_l inst2pat_l ≔ ∅ @c_links_done c_links_done ≔ ∅ end event unfold_root_c extends unfold_root_c end event unfold_p extends unfold_p end event unfold_node_c extends unfold_node_c end convergent event unfold_node_link_oi_Transpose // between 2 subcomponents any spi sci dpi dci // source/dest ports and components in instance l new_l c // container where @l_ty l ∈ (components;links)[{Pat}] ∩ Transpose @src_o src(l) ∈ OPort @dst_i dst(l) ∈ IPort @c c ∈ components[{Inst}] ∩ dom(inst2pat_c) @not_done l↦c ∉ c_links_done @sci sci ∈ 1‥c_multiplicity(ports∼(src(l))) ↣ container∼[{c}] @sci_ctr inst2pat_c[ran(sci)] ⊆ {ports∼(src(l))} @sci_c_index sci;c_index = id @dci dci ∈ 1‥c_multiplicity(ports∼(dst(l))) ↣ container∼[{c}] @dci_ctr inst2pat_c[ran(dci)] ⊆ {ports∼(dst(l))} @dci_c_index dci;c_index = id @spi_ty spi ∈ ran(sci) → (1‥p_multiplicity(src(l)) ↣ inst2pat_p∼[{src(l)}]) @spi_ctr ∀ci·ci∈ran(sci) ⇒ spi(ci) ∈ 1‥p_multiplicity(src(l)) ↣ ports[{ci}] ∩ OPort @spi_p_index ∀ci·ci∈ran(sci) ⇒ spi(ci);p_index = id @dpi_ty dpi ∈ ran(dci) → (1‥p_multiplicity(dst(l)) ↣ inst2pat_p∼[{dst(l)}]) @dpi_ctr ∀ci·ci∈ran(dci) ⇒ dpi(ci) ∈ 1‥p_multiplicity(dst(l)) ↣ ports[{ci}] ∩ IPort @dpi_p_index ∀ci·ci∈ran(dci) ⇒ dpi(ci);p_index = id @new_l_ty new_l ∈ 1‥p_multiplicity(src(l)) × 1‥c_multiplicity(ports∼(src(l))) ↣ Transpose ∖ ran(links) then @links links ≔ links ∪ ({c} × ran(new_l)) @nsrc src ≔ src ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ spi(sci(ic))(ip)} @ndst dst ≔ dst ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ dpi(dci(ip))(ic)} @inst2pat_l inst2pat_l ≔ inst2pat_l ∪ (ran(new_l) × {l}) @c_links_done c_links_done ≔ c_links_done ∪ {l↦c} end event apply_pattern extends apply_pattern any inst_links new_links where @inst_links_ty inst_links ∈ (components;links)[{Inst}] ⤔ (components;links)[{Mdl}] @inst_src inst_links ; src ⊆ src; inst_ports // Les ports sources d'un lien instancié sont instanciés @inst_dst inst_links ; dst ⊆ dst; inst_ports // Les ports cibles d'un lien instancié sont instanciés @nl new_links ∈ (components;links)[{Inst}] ∖ dom(inst_links) ↣ Link ∖ ran(links) then @s src ≔ src (new_links∼;src;(inst_ports ∪ new_ports)) @d dst ≔ dst (new_links∼;dst;(inst_ports ∪ new_ports)) @l links ≔ links ∪ ((inst_components∪new_components)∼;links;new_links) end event apply_link_pattern extends apply_link_pattern any inst_links new_links where @inst_links_ty inst_links ⊆ links [{comp}] @inst_src src[inst_links] = dom(src_ports) @inst_dst dst[inst_links] = dom(dst_ports) @nl new_links ∈ (components;links)[{Inst}] ↣ Link ∖ ran(links) then @s src ≔ (inst_links ⩤ src) (new_links∼;src;new_ports) @d dst ≔ (inst_links ⩤ dst) (new_links∼;dst;new_ports) @l links ≔ (links ⩥ inst_links) ∪ ((inst_components∪new_components)∼;links;new_links) end end " version="5"> |
|
|
<org.eventb.core.refinesMachine name="_a6WF0MOWEeeQteb5bDCu6g" org.eventb.core.target="mPort"/> |
|
|
<org.eventb.core.seesContext name="_a6WF0cOWEeeQteb5bDCu6g" org.eventb.core.target="cLink"/> |
|
|
<org.eventb.core.event name="'" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="instanciate_pattern"> |
|
|
<org.eventb.core.refinesEvent name="_ypF-0PlnEeeeS5KQUtrGlw" org.eventb.core.target="instanciate_pattern"/> |
|
|
<org.eventb.core.guard name="_S_eIJL4_EeeN0675uvquSw" org.eventb.core.label="transp_ctr1" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=card(inst_components[{ports∼(dst(l))}])"/> |
|
|
<org.eventb.core.guard name="_S_eIJb4_EeeN0675uvquSw" org.eventb.core.label="transp_ctr2" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(dst(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{src(l)}])=c_mult_others(ports∼(dst(l)))"/> |
|
|
<org.eventb.core.guard name="_S_eIJr4_EeeN0675uvquSw" org.eventb.core.label="transp_ctr3" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∈ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=card(inst_components[{ports∼(src(l))}])"/> |
|
|
<org.eventb.core.guard name="_S_eIJ74_EeeN0675uvquSw" org.eventb.core.label="transp_ctr4" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ∧ ports∼(src(l)) ∉ dom(inst_components) ⇒ card(inst_ports[{dst(l)}])=c_mult_others(ports∼(src(l)))"/> |
|
|
<org.eventb.core.action name="_S_evNr4_EeeN0675uvquSw" org.eventb.core.assignment="links ≔ components[{Inst}] ⩤ links" org.eventb.core.label="links"/> |
|
|
<org.eventb.core.action name="_oe6yMMOjEeeQteb5bDCu6g" org.eventb.core.assignment="src ≔ (components;links)[{Inst}] ⩤ src" org.eventb.core.label="src"/> |
|
|
<org.eventb.core.action name="_oe6yMcOjEeeQteb5bDCu6g" org.eventb.core.assignment="dst ≔ (components;links)[{Inst}] ⩤ dst" org.eventb.core.label="dst"/> |
|
|
<org.eventb.core.action name="_0IWfoAK-EeiAPf1wPUl3Gw" org.eventb.core.assignment="inst2pat_l ≔ ∅" org.eventb.core.label="inst2pat_l"/> |
|
|
<org.eventb.core.action name="_SwNs4ALXEei9ocE08JsPSw" org.eventb.core.assignment="c_links_done ≔ ∅" org.eventb.core.label="c_links_done"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.variable name="_S_fWQr4_EeeN0675uvquSw" org.eventb.core.identifier="components"/> |
|
|
<org.eventb.core.variable name="_S_fWRL4_EeeN0675uvquSw" org.eventb.core.identifier="container"/> |
|
|
<org.eventb.core.variable name="_S_fWRb4_EeeN0675uvquSw" org.eventb.core.identifier="containers"/> |
|
|
<org.eventb.core.variable name="_S_fWRr4_EeeN0675uvquSw" org.eventb.core.identifier="c_multiplicity"/> |
|
|
<org.eventb.core.invariant name="_S_fWR74_EeeN0675uvquSw" org.eventb.core.label="link_ty" org.eventb.core.predicate="links ∈ ran(components) ↔ Link"/> |
|
|
<org.eventb.core.invariant name="_S_fWSL4_EeeN0675uvquSw" org.eventb.core.label="link_finite" org.eventb.core.predicate="∀c·finite(links[{c}])"/> |
|
|
<org.eventb.core.invariant name="_S_f9UL4_EeeN0675uvquSw" org.eventb.core.label="link_not_shared" org.eventb.core.predicate="links∼ ∈ Link ⇸ Component"/> |
|
|
<org.eventb.core.invariant name="_S_f9Ub4_EeeN0675uvquSw" org.eventb.core.label="src_ty" org.eventb.core.predicate="src ∈ ran(links) → ran(ports)"/> |
|
|
<org.eventb.core.invariant name="_S_f9Ur4_EeeN0675uvquSw" org.eventb.core.label="dst_ty" org.eventb.core.predicate="dst ∈ ran(links) → ran(ports)"/> |
|
|
<org.eventb.core.variable name="_73nGMMOYEeeQteb5bDCu6g" org.eventb.core.identifier="c_index"/> |
|
|
<org.eventb.core.variable name="_0ffzsMOZEeeQteb5bDCu6g" org.eventb.core.identifier="to_unfold_c"/> |
|
|
<org.eventb.core.invariant name="_0ffzssOZEeeQteb5bDCu6g" org.eventb.core.label="link_cii" org.eventb.core.predicate="links; ((src ⊗ dst) ▷ (IPort × IPort)) ⊆ ports ⊗ (container∼; ports)"/> |
|
|
<org.eventb.core.variable name="_j2NdQOGVEeeUoZak4Ibgcg" org.eventb.core.identifier="to_unfold_c_in"/> |
|
|
<org.eventb.core.variable name="_j2NdQeGVEeeUoZak4Ibgcg" org.eventb.core.identifier="inst2pat_c"/> |
|
|
<org.eventb.core.event name="_JZbnAOGWEeeUoZak4Ibgcg" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="unfold_root_c"> |
|
|
<org.eventb.core.refinesEvent name="_7XcAsAK3EeiAPf1wPUl3Gw" org.eventb.core.target="unfold_root_c"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.variable name="_QZUfgOTyEeemadOWCHlIvw" org.eventb.core.identifier="M"/> |
|
|
<org.eventb.core.variable name="_QZUfgeTyEeemadOWCHlIvw" org.eventb.core.identifier="P"/> |
|
|
<org.eventb.core.event name="_QZUfguTyEeemadOWCHlIvw" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="unfold_p"> |
|
|
<org.eventb.core.refinesEvent name="_-RPi0P06Eees7pYemx4WBQ" org.eventb.core.target="unfold_p"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.event name="_QZVGk-TyEeemadOWCHlIvw" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="unfold_node_c"> |
|
|
<org.eventb.core.refinesEvent name="_K9uI4BKbEeqU6uo9ksjEPA" org.eventb.core.target="unfold_node_c"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.variable name="_Z5iv0Pg-EeeeS5KQUtrGlw" org.eventb.core.identifier="c_indexes"/> |
|
|
<org.eventb.core.variable name="_Z5iv0fg-EeeeS5KQUtrGlw" org.eventb.core.identifier="cProperties"/> |
|
|
<org.eventb.core.invariant name="_Z5iv0vg-EeeeS5KQUtrGlw" org.eventb.core.label="link_coi" org.eventb.core.predicate="links; ((src ⊗ dst) ▷ (OPort × IPort)) ⊆ (container∼;ports) ⊗ (container∼; ports)"/> |
|
|
<org.eventb.core.event name="_H7W2gPg_EeeeS5KQUtrGlw" org.eventb.core.comment="between 2 subcomponents" org.eventb.core.convergence="1" org.eventb.core.extended="false" org.eventb.core.label="unfold_node_link_oi_Transpose"> |
|
|
<org.eventb.core.parameter name="_S_dhEr4_EeeN0675uvquSw" org.eventb.core.identifier="spi"/> |
|
|
<org.eventb.core.parameter name="_S_eIIL4_EeeN0675uvquSw" org.eventb.core.identifier="sci"/> |
|
|
<org.eventb.core.parameter name="_JZbnAuGWEeeUoZak4Ibgcg" org.eventb.core.identifier="dpi"/> |
|
|
<org.eventb.core.parameter name="_nOhFwOGpEeeUoZak4Ibgcg" org.eventb.core.comment="source/dest ports and components in instance" org.eventb.core.identifier="dci"/> |
|
|
<org.eventb.core.parameter name="_RYtJ0OT7EeemadOWCHlIvw" org.eventb.core.identifier="l"/> |
|
|
<org.eventb.core.parameter name="_nHIsIARrEei9ocE08JsPSw" org.eventb.core.identifier="new_l"/> |
|
|
<org.eventb.core.parameter name="_nHJTMARrEei9ocE08JsPSw" org.eventb.core.comment="container" org.eventb.core.identifier="c"/> |
|
|
<org.eventb.core.guard name="_JZbnBOGWEeeUoZak4Ibgcg" org.eventb.core.label="l_ty" org.eventb.core.predicate="l ∈ (components;links)[{Pat}] ∩ Transpose"/> |
|
|
<org.eventb.core.guard name="_nOhFweGpEeeUoZak4Ibgcg" org.eventb.core.label="src_o" org.eventb.core.predicate="src(l) ∈ OPort"/> |
|
|
<org.eventb.core.guard name="_yq8FweGpEeeUoZak4Ibgcg" org.eventb.core.label="dst_i" org.eventb.core.predicate="dst(l) ∈ IPort"/> |
|
|
<org.eventb.core.guard name="_3EQ2ceGpEeeUoZak4Ibgcg" org.eventb.core.label="c" org.eventb.core.predicate="c ∈ components[{Inst}] ∩ dom(inst2pat_c)"/> |
|
|
<org.eventb.core.guard name="_RYtJ0uT7EeemadOWCHlIvw" org.eventb.core.label="not_done" org.eventb.core.predicate="l↦c ∉ c_links_done"/> |
|
|
<org.eventb.core.guard name="_RYtJ0-T7EeemadOWCHlIvw" org.eventb.core.label="sci" org.eventb.core.predicate="sci ∈ 1‥c_multiplicity(ports∼(src(l))) ↣ container∼[{c}]"/> |
|
|
<org.eventb.core.guard name="_RYtJ1OT7EeemadOWCHlIvw" org.eventb.core.label="sci_ctr" org.eventb.core.predicate="inst2pat_c[ran(sci)] ⊆ {ports∼(src(l))}"/> |
|
|
<org.eventb.core.guard name="_RYtJ1eT7EeemadOWCHlIvw" org.eventb.core.label="sci_c_index" org.eventb.core.predicate="sci;c_index = id"/> |
|
|
<org.eventb.core.guard name="_WfAcMAK-EeiAPf1wPUl3Gw" org.eventb.core.label="dci" org.eventb.core.predicate="dci ∈ 1‥c_multiplicity(ports∼(dst(l))) ↣ container∼[{c}]"/> |
|
|
<org.eventb.core.guard name="_nHJTNQRrEei9ocE08JsPSw" org.eventb.core.label="dci_ctr" org.eventb.core.predicate="inst2pat_c[ran(dci)] ⊆ {ports∼(dst(l))}"/> |
|
|
<org.eventb.core.guard name="_DdBJsAc3EeiFlqW-8GKglg" org.eventb.core.label="dci_c_index" org.eventb.core.predicate="dci;c_index = id"/> |
|
|
<org.eventb.core.guard name="_70QzIAc3EeiFlqW-8GKglg" org.eventb.core.label="spi_ty" org.eventb.core.predicate="spi ∈ ran(sci) → (1‥p_multiplicity(src(l)) ↣ inst2pat_p∼[{src(l)}])"/> |
|
|
<org.eventb.core.guard name="_6bPz8AdGEeiFlqW-8GKglg" org.eventb.core.label="spi_ctr" org.eventb.core.predicate="∀ci·ci∈ran(sci) ⇒ spi(ci) ∈ 1‥p_multiplicity(src(l)) ↣ ports[{ci}] ∩ OPort"/> |
|
|
<org.eventb.core.guard name="_6bPz8QdGEeiFlqW-8GKglg" org.eventb.core.label="spi_p_index" org.eventb.core.predicate="∀ci·ci∈ran(sci) ⇒ spi(ci);p_index = id"/> |
|
|
<org.eventb.core.guard name="_nxuuQQi-EeiFlqW-8GKglg" org.eventb.core.label="dpi_ty" org.eventb.core.predicate="dpi ∈ ran(dci) → (1‥p_multiplicity(dst(l)) ↣ inst2pat_p∼[{dst(l)}])"/> |
|
|
<org.eventb.core.guard name="_quOpsAjAEeiFlqW-8GKglg" org.eventb.core.label="dpi_ctr" org.eventb.core.predicate="∀ci·ci∈ran(dci) ⇒ dpi(ci) ∈ 1‥p_multiplicity(dst(l)) ↣ ports[{ci}] ∩ IPort"/> |
|
|
<org.eventb.core.guard name="_BL1LoAkjEeiFlqW-8GKglg" org.eventb.core.label="dpi_p_index" org.eventb.core.predicate="∀ci·ci∈ran(dci) ⇒ dpi(ci);p_index = id"/> |
|
|
<org.eventb.core.guard name="_BL1ysAkjEeiFlqW-8GKglg" org.eventb.core.label="new_l_ty" org.eventb.core.predicate="new_l ∈ 1‥p_multiplicity(src(l)) × 1‥c_multiplicity(ports∼(src(l))) ↣ Transpose ∖ ran(links)"/> |
|
|
<org.eventb.core.action name="_ov6eYALXEei9ocE08JsPSw" org.eventb.core.assignment="links ≔ links ∪ ({c} × ran(new_l))" org.eventb.core.label="links"/> |
|
|
<org.eventb.core.action name="_ztHbMAaaEeiFlqW-8GKglg" org.eventb.core.assignment="src ≔ src ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ spi(sci(ic))(ip)}" org.eventb.core.label="nsrc"/> |
|
|
<org.eventb.core.action name="_1ZIboAabEeiFlqW-8GKglg" org.eventb.core.assignment="dst ≔ dst ∪ {ip,ic· ip ↦ ic ∈ dom(new_l) ∣ new_l(ip↦ic) ↦ dpi(dci(ip))(ic)}" org.eventb.core.label="ndst"/> |
|
|
<org.eventb.core.action name="_1ZIboQabEeiFlqW-8GKglg" org.eventb.core.assignment="inst2pat_l ≔ inst2pat_l ∪ (ran(new_l) × {l})" org.eventb.core.label="inst2pat_l"/> |
|
|
<org.eventb.core.action name="_czs-oAi3EeiFlqW-8GKglg" org.eventb.core.assignment="c_links_done ≔ c_links_done ∪ {l↦c}" org.eventb.core.label="c_links_done"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.event name="_ypJCIflnEeeeS5KQUtrGlw" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="apply_pattern"> |
|
|
<org.eventb.core.refinesEvent name="_K9vXABKbEeqU6uo9ksjEPA" org.eventb.core.target="apply_pattern"/> |
|
|
<org.eventb.core.parameter name="_nHJTMQRrEei9ocE08JsPSw" org.eventb.core.identifier="inst_links"/> |
|
|
<org.eventb.core.parameter name="_nxuuQAi-EeiFlqW-8GKglg" org.eventb.core.identifier="new_links"/> |
|
|
<org.eventb.core.guard name="_Bszp0AsoEeigQsLVMUeRQw" org.eventb.core.label="inst_links_ty" org.eventb.core.predicate="inst_links ∈ (components;links)[{Inst}] ⤔ (components;links)[{Mdl}]"/> |
|
|
<org.eventb.core.guard name="_G8ASkAsoEeigQsLVMUeRQw" org.eventb.core.comment="Les ports sources d'un lien instancié sont instanciés" org.eventb.core.label="inst_src" org.eventb.core.predicate="inst_links ; src ⊆ src; inst_ports"/> |
|
|
<org.eventb.core.guard name="_78O84AsoEeigQsLVMUeRQw" org.eventb.core.comment="Les ports cibles d'un lien instancié sont instanciés" org.eventb.core.label="inst_dst" org.eventb.core.predicate="inst_links ; dst ⊆ dst; inst_ports"/> |
|
|
<org.eventb.core.guard name="_78O84QsoEeigQsLVMUeRQw" org.eventb.core.label="nl" org.eventb.core.predicate="new_links ∈ (components;links)[{Inst}] ∖ dom(inst_links) ↣ Link ∖ ran(links)"/> |
|
|
<org.eventb.core.action name="_czuz0gi3EeiFlqW-8GKglg" org.eventb.core.assignment="src ≔ src (new_links∼;src;(inst_ports ∪ new_ports))" org.eventb.core.label="s"/> |
|
|
<org.eventb.core.action name="_vsWoMAs_EeiJbMmmYBswhA" org.eventb.core.assignment="dst ≔ dst (new_links∼;dst;(inst_ports ∪ new_ports))" org.eventb.core.label="d"/> |
|
|
<org.eventb.core.action name="_Ce3aEAtCEeiJbMmmYBswhA" org.eventb.core.assignment="links ≔ links ∪ ((inst_components∪new_components)∼;links;new_links)" org.eventb.core.label="l"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.variable name="_Ajk8sPloEeeeS5KQUtrGlw" org.eventb.core.identifier="ports"/> |
|
|
<org.eventb.core.invariant name="_GNeQ0_qOEeectLZKwQfI0A" org.eventb.core.label="link_coo" org.eventb.core.predicate="links; ((src ⊗ dst) ▷ (OPort × OPort)) ⊆ (container∼; ports) ⊗ ports"/> |
|
|
<org.eventb.core.invariant name="_GNe34PqOEeectLZKwQfI0A" org.eventb.core.label="link_cio" org.eventb.core.predicate="links; ((src ⊗ dst) ▷ (IPort × OPort)) ⊆ ports ⊗ ports"/> |
|
|
<org.eventb.core.invariant name="_69ZZAPq0EeectLZKwQfI0A" org.eventb.core.label="transp_src" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(src(l)) = c_multiplicity(ports∼(dst(l)))"/> |
|
|
<org.eventb.core.variable name="_X1DEEAA3EeictLZKwQfI0A" org.eventb.core.identifier="p_multiplicity"/> |
|
|
<org.eventb.core.variable name="_X1DEEQA3EeictLZKwQfI0A" org.eventb.core.identifier="p_index"/> |
|
|
<org.eventb.core.variable name="_X1DEEgA3EeictLZKwQfI0A" org.eventb.core.identifier="to_unfold_p_in"/> |
|
|
<org.eventb.core.variable name="_X1DEEwA3EeictLZKwQfI0A" org.eventb.core.identifier="inst2pat_p"/> |
|
|
<org.eventb.core.invariant name="_X1DEFAA3EeictLZKwQfI0A" org.eventb.core.label="transp_dst" org.eventb.core.predicate="∀l·l∈(components;links)[{Pat}]∩Transpose ⇒ p_multiplicity(dst(l)) = c_multiplicity(ports∼(src(l)))"/> |
|
|
<org.eventb.core.event name="_u6P4gAK9EeiAPf1wPUl3Gw" org.eventb.core.convergence="0" org.eventb.core.extended="true" org.eventb.core.label="apply_link_pattern"> |
|
|
<org.eventb.core.refinesEvent name="_K9v-EBKbEeqU6uo9ksjEPA" org.eventb.core.target="apply_link_pattern"/> |
|
|
<org.eventb.core.parameter name="_F143MvJAEemlHb-ZV1EcBQ" org.eventb.core.identifier="inst_links"/> |
|
|
<org.eventb.core.parameter name="_F143M_JAEemlHb-ZV1EcBQ" org.eventb.core.identifier="new_links"/> |
|
|
<org.eventb.core.guard name="_F143NPJAEemlHb-ZV1EcBQ" org.eventb.core.label="inst_links_ty" org.eventb.core.predicate="inst_links ⊆ links [{comp}]"/> |
|
|
<org.eventb.core.guard name="_F143NfJAEemlHb-ZV1EcBQ" org.eventb.core.label="inst_src" org.eventb.core.predicate="src[inst_links] = dom(src_ports)"/> |
|
|
<org.eventb.core.guard name="_F143NvJAEemlHb-ZV1EcBQ" org.eventb.core.label="inst_dst" org.eventb.core.predicate="dst[inst_links] = dom(dst_ports)"/> |
|
|
<org.eventb.core.guard name="_F143N_JAEemlHb-ZV1EcBQ" org.eventb.core.label="nl" org.eventb.core.predicate="new_links ∈ (components;links)[{Inst}] ↣ Link ∖ ran(links)"/> |
|
|
<org.eventb.core.action name="_F143OPJAEemlHb-ZV1EcBQ" org.eventb.core.assignment="src ≔ (inst_links ⩤ src) (new_links∼;src;new_ports)" org.eventb.core.label="s"/> |
|
|
<org.eventb.core.action name="_F143OfJAEemlHb-ZV1EcBQ" org.eventb.core.assignment="dst ≔ (inst_links ⩤ dst) (new_links∼;dst;new_ports)" org.eventb.core.label="d"/> |
|
|
<org.eventb.core.action name="_F143OvJAEemlHb-ZV1EcBQ" org.eventb.core.assignment="links ≔ (links ⩥ inst_links) ∪ ((inst_components∪new_components)∼;links;new_links)" org.eventb.core.label="l"/> |
|
|
</org.eventb.core.event> |
|
|
<org.eventb.core.invariant name="_ocRYQAbKEeiFlqW-8GKglg" org.eventb.core.label="c_links_done" org.eventb.core.predicate="c_links_done ⊆ (components;links)[{Pat}] × components[{Inst}]"/> |
|
|
<org.eventb.core.invariant name="_ocRYQQbKEeiFlqW-8GKglg" org.eventb.core.label="inst2pat_l_ty" org.eventb.core.predicate="inst2pat_l ∈ (components;links)[{Inst}] → (components;links)[{Pat}]"/> |
|
|
<org.eventb.core.variable name="_cztlsAi3EeiFlqW-8GKglg" org.eventb.core.identifier="links"/> |
|
|
<org.eventb.core.invariant name="_cztlsQi3EeiFlqW-8GKglg" org.eventb.core.label="inst2pat_l_preserve_type" org.eventb.core.predicate="∀K·K∈LKind ⇒ inst2pat_l[K] ⊆ K"/> |
|
|
<org.eventb.core.variant name="_K8id4Ai5EeiFlqW-8GKglg" org.eventb.core.expression="((components;links)[{Pat}] × components[{Inst}]) ∖ c_links_done"/> |
|
|
<org.eventb.core.variable name="_rQxpAAskEeigQsLVMUeRQw" org.eventb.core.identifier="src"/> |
|
|
<org.eventb.core.invariant name="_rQxpAQskEeigQsLVMUeRQw" org.eventb.core.label="inst2pat_l_src" org.eventb.core.predicate="inst2pat_l;src = src;inst2pat_p"/> |
|
|
<org.eventb.core.invariant name="_rQxpAgskEeigQsLVMUeRQw" org.eventb.core.label="inst2pat_l_dst" org.eventb.core.predicate="inst2pat_l;dst = dst;inst2pat_p"/> |
|
|
<org.eventb.core.invariant name="_EviiYAslEeigQsLVMUeRQw" org.eventb.core.label="transp_correct1" org.eventb.core.predicate="∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(src(l)) = c_index(ports∼(dst(l)))"/> |
|
|
<org.eventb.core.invariant name="_EviiYQslEeigQsLVMUeRQw" org.eventb.core.label="transp_correct2" org.eventb.core.predicate="∀l·l∈(components;links)[{Inst}] ∩ Transpose ⇒ p_index(dst(l)) = c_index(ports∼(src(l)))"/> |
|
|
<org.eventb.core.variable name="_K9xMMBKbEeqU6uo9ksjEPA" org.eventb.core.identifier="dst"/> |
|
|
<org.eventb.core.variable name="_K9xMMRKbEeqU6uo9ksjEPA" org.eventb.core.identifier="c_links_done"/> |
|
|
<org.eventb.core.variable name="_K9xMMhKbEeqU6uo9ksjEPA" org.eventb.core.identifier="inst2pat_l"/> |
|
|
</org.eventb.core.machineFile>
|
|
|
|