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

507 lines
35 KiB

<?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="mComponent">
<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="mComponent"/>
</annotations>
<annotations source="http:///org/eventb/core/RodinReferenceNamesAnnotations">
<details key="sees cComponent" value="_cQf0YPqUEeectLZKwQfI0A"/>
</annotations>
<attributes key="org.eventb.texttools.text_lastmodified">
<value type="Long" value="ACED00057372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000001626783DA03"/>
</attributes>
<attributes key="org.eventb.texttools.text_representation">
<value type="String" value="ACED00057412386D616368696E65206D436F6D706F6E656E7420736565732063436F6D706F6E656E740A0A7661726961626C657320636F6D706F6E656E747320636F6E7461696E657220635F6D756C7469706C696369747920746F5F636C6F6E655F6320635F696E64657820746F5F756E666F6C645F6320746F5F756E666F6C645F635F696E20696E7374327061745F630A0A696E76617269616E74730A202040636F6D7020636F6D706F6E656E747320E28888204D6F64656C20E2869420436F6D706F6E656E740A202040636F6D705F66696E69746520E288806DC2B766696E69746528636F6D706F6E656E74735B7B6D7D5D290A202040636F6D705F6E6F745F73686172656420636F6D706F6E656E7473E288BC20E2888820436F6D706F6E656E7420E287B8204D6F64656C0A202040635F6D756C7420635F6D756C7469706C696369747920E2888820636F6D706F6E656E74735B5061747465726E5D20E2869220E284950A202040636F6E745F747920636F6E7461696E657220E288882072616E28636F6D706F6E656E74732920E287B82072616E28636F6D706F6E656E7473290A202040636F6E745F63747220636F6D706F6E656E74733B636F6E7461696E65723B636F6D706F6E656E7473E288BC20E28A862069640A202040616379636C20E2888366C2B7206620E2888820436F6D706F6E656E7420E2869420436F6D706F6E656E7420E288A720636F6E7461696E657220E28A86206620E288A720663B6620E28A86206620E288A720696420E288A92066203D20E288850A20207468656F72656D204069727265666C20636F6E7461696E657220E288A9206964203D20E288850A202040746F5F756E666F6C645F635F696E20746F5F756E666F6C645F635F696E20E2888820636F6D706F6E656E74735B7B5061747D5D20E2869420636F6D706F6E656E74735B7B496E73747D5D0A202040746F5F636C6F6E655F6320746F5F636C6F6E655F6320E2888820636F6D706F6E656E74735B7B496E73747D5D20E287B820636F6D706F6E656E74735B7B5061747D5D202F2F2046726F6D206E657720636F6D706F6E656E7420746F206F726967696E616C20636F6D706F6E656E740A202040746F5F756E666F6C645F6320746F5F756E666F6C645F6320E28A8620636F6D706F6E656E74735B7B5061747D5D0A202040696E7374327061745F635F747920696E7374327061745F6320E2888820636F6D706F6E656E74735B7B496E73747D5D20E2869220636F6D706F6E656E74735B7B5061747D5D0A202040696E7374327061745F636C6F6E6520746F5F636C6F6E655F6320E28A8620696E7374327061745F630A202040696E7374327061745F756E666F6C645F696E20746F5F756E666F6C645F635F696E3B696E7374327061745F6320E28A8620636F6E7461696E65720A20204070617432696E73745F756E666F6C6420746F5F756E666F6C645F6320E288A92072616E28696E7374327061745F6329203D20E288850A202040756E666F6C645F726F6F7420746F5F756E666F6C645F6320E288A920646F6D28636F6E7461696E657229203D20E288850A202040756E666F6C645F696E20646F6D28746F5F756E666F6C645F635F696E2920E28A8620646F6D28636F6E7461696E6572290A20207468656F72656D2040756E666F6C645F756E666F6C645F696E20746F5F756E666F6C645F6320E288A920646F6D28746F5F756E666F6C645F635F696E29203D20E288850A20207468656F72656D2040756E666F6C645F636C6F6E6520746F5F756E666F6C645F6320E288A92072616E28746F5F636C6F6E655F6329203D20E288850A202040696E7374327061745F636F6E7420696E7374327061745F633B636F6E7461696E6572203D20636F6E7461696E65723B696E7374327061745F630A202040635F696E6465785F747920635F696E64657820E2888820646F6D28696E7374327061745F632920E2869220E284950A202040746F5F636C6F6E655F635F6D756C7420E2888063C2B72063E28888646F6D28696E7374327061745F632920E2879220635F696E64657828632920E288882031E280A5635F6D756C7469706C696369747928696E7374327061745F63286329290A0A76617269616E7420E28B83206320C2B72063E2888828746F5F756E666F6C645F6320E288AA2072616E28746F5F636C6F6E655F63292920E288A3207B637D20C39720696E746572287B20736320E288A32063E28888736320E288A720636F6E7461696E6572E288BC5B73635D20E28A862073637D290A0A6576656E74730A20206576656E7420696E7374616E63696174655F7061747465726E0A20202020616E7920696E73745F636F6D706F6E656E747320635F6D756C745F6F74686572730A2020202077686572650A20202020202040696320696E73745F636F6D706F6E656E747320E2888820636F6D706F6E656E74735B7B5061747D5D20E2869420636F6D706F6E656E74735B7B4D646C7D5D0A2020202020204069637220696E73745F636F6D706F6E656E7473E288BC20E2888820636F6D706F6E656E74735B7B4D646C7D5D20E287B820636F6D706F6E656E74735B7B5061747D5D0A20202020202040636D20635F6D756C745F6F746865727320E2888820636F6D706F6E656E74735B7B5061747D5D20E2889620646F6D28696E73745F636F6D706F6E656E74732920E2869220E284950A202020207468656E0A20202020202040635F6D756C7420635F6D756C7469706C696369747920E2899420635F6D756C7469706C696369747920EE84832028635F6D756C745F6F746865727320EE8483207B7063C2B720706320E2888820646F6D28696E73745F636F6D706F6E656E74732920E288A320706320E286A6206361726428696E73745F636F6D706F6E656E74735B7B70637D5D297D290A20202020202040746F5F756E666F6C645F6320746F5F756E666F6C645F6320E289942028636F6D706F6E656E74735B7B5061747D5D20E2889620646F6D28636F6E7461696E657229290A20202020202040746F5F756E666F6C645F635F696E20746F5F756E666F6C645F635F696E20E2899420E288850A20202020202040636F6D706F6E656E74735F696E737420636F6D706F6E656E747320E28994207B496E73747D20E2A9A420636F6D706F6E656E74730A20202020202040636F6E7461696E65725F696E737420636F6E7461696E657220E2899420636F6D706F6E656E74735B7B496E73747D5D20E2A9A420636F6E7461696E65720A20202020202040746F5F636C6F6E655F6320746F5F636C6F6E655F6320E2899420E288850A20202020202040635F696E64657820635F696E64657820E2899420E288850A2020202020204070617432696E73745F6320696E7374327061745F6320E2899420E288850A2020656E640A0A2020636F6E76657267656E74206576656E7420756E666F6C645F726F6F745F630A20202020616E792063206E65775F630A2020202077686572650A20202020202040635F7479206320E2888820746F5F756E666F6C645F630A202020202020406E65775F635F7479206E65775F6320E288882031E280A5635F6D756C7469706C696369747928632920E286A320436F6D706F6E656E7420E288962072616E28636F6D706F6E656E7473290A202020207468656E0A202020202020406E65775F635F6D6F64656C20636F6D706F6E656E747320E2899420636F6D706F6E656E747320E288AA20287B496E73747DC39772616E286E65775F6329290A20202020202040746F5F636C6F6E655F6320746F5F636C6F6E655F6320E2899420746F5F636C6F6E655F6320E288AA202872616E286E65775F6329C3977B637D290A20202020202040635F696E64657820635F696E64657820E2899420635F696E64657820E288AA206E65775F63E288BC0A20202020202040746F5F756E666F6C645F6320746F5F756E666F6C645F6320E2899420746F5F756E666F6C645F6320E28896207B637D0A2020202020204070617432696E73745F6320696E7374327061745F6320E2899420696E7374327061745F6320E288AA202872616E286E65775F632920C397207B637D290A2020656E640A0A2020636F6E76657267656E74206576656E7420636C6F6E655F63202F2F2056617269616E74653A207370C3A963696669657220646972656374656D656E74206C61206665726D6574757265207472616E7369746976652E0A20202020616E7920630A2020202077686572650A20202020202040635F7479206320E2888820646F6D28746F5F636C6F6E655F63290A202020207468656E0A20202020202040746F5F756E666F6C645F635F696E20746F5F756E666F6C645F635F696E20E2899420746F5F756E666F6C645F635F696E20E288AA2028636F6E7461696E6572E288BC5B7B746F5F636C6F6E655F632863297D5D20C397207B637D290A20202020202040636C6F6E65645F6320746F5F636C6F6E655F6320E28994207B637D20E2A9A420746F5F636C6F6E655F630A2020656E640A0A2020636F6E76657267656E74206576656E7420756E666F6C645F6E6F64655F63202F2F2072C3A9706C69636174696F6E2064657320C3A96CC3A96D656E747320636F6D706F73616E7473202F2F204120766F69723A206475706C69636174696F6E20647520636F6E74656E7520646520430A20202020616E7920632064657374206E65775F630A2020202077686572650A20202020202040635F7479206320E286A6206465737420E2888820746F5F756E666F6C645F635F696E0A202020202020406E65775F635F7479206E65775F6320E288882031E280A5635F6D756C7469706C696369747928632920E286A320436F6D706F6E656E7420E288962072616E28636F6D706F6E656E7473290A202020207468656E0A202020202020406E65775F635F6D6F64656C20636F6D706F6E656E747320E2899420636F6D706F6E656E747320E288AA20287B496E73747DC39772616E286E65775F6329290A202020202020406E65775F635F636F6E7461696E657220636F6E7461696E657220E2899420636F6E7461696E657220E288AA202872616E286E65775F6329C3977B646573747D290A20202020202040746F5F636C6F6E655F6320746F5F636C6F6E655F6320E2899420746F5F636C6F6E655F6320E288AA202872616E286E65775F6329C3977B637D290A20202020202040635F696E64657820635F696E64657820E2899420635F696E64657820E288AA206E65775F63E288BC0A20202020202040746F5F756E666F6C645F635F696E20746F5F756E666F6C645F635F696E20E2899420746F5F756E666F6C645F635F696E20E28896207B6320E286A620646573747D0A2020202020204070617432696E73745F6320696E7374327061745F6320E2899420696E7374327061745F6320E288AA202872616E286E65775F632920C397207B637D290A2020656E640A0A20206576656E74206170706C795F7061747465726E202F2F207472616E73666F726D6174696F6E206475206D6F64C3A86C650A20202020616E7920696E73745F636F6D706F6E656E7473202F2F20696E7374616E6365206D617070696E670A20202020202020206E65775F636F6D706F6E656E74730A2020202077686572650A20202020202040696320696E73745F636F6D706F6E656E747320E2888820636F6D706F6E656E74735B7B496E73747D5D20E2A49420636F6D706F6E656E74735B7B4D646C7D5D0A202020202020406E63206E65775F636F6D706F6E656E747320E2888820636F6D706F6E656E74735B7B496E73747D5D20E2889620646F6D28696E73745F636F6D706F6E656E74732920E286A320436F6D706F6E656E7420E288962072616E28636F6D706F6E656E7473290A20202020202040616379636C5F696E73745F636F6D706F6E656E747320646F6D28696E73745F636F6D706F6E656E74732920E2978120636F6E7461696E65723B696E73745F636F6D706F6E656E747320E28A8620696E73745F636F6D706F6E656E74733B636F6E7461696E65720A20202020202040616379636C5F636F6E7461696E657220636F6E7461696E65725B646F6D28696E73745F636F6D706F6E656E7473295D20E28A8620646F6D28696E73745F636F6D706F6E656E7473290A202020207468656E0A202020202020406D20636F6D706F6E656E747320E2899420636F6D706F6E656E747320E288AA20287B4D646C7DC39772616E286E65775F636F6D706F6E656E747329290A202020202020406620636F6E7461696E657220E2899420636F6E7461696E657220E288AA202828696E73745F636F6D706F6E656E747320E288AA206E65775F636F6D706F6E656E747329E288BC3B636F6E7461696E65723B28696E73745F636F6D706F6E656E747320E288AA206E65775F636F6D706F6E656E747329290A2020656E640A656E640A"/>
</attributes>
<sees href="../cComponent.buc#http://emf.eventb.org/models/core/context/2014::Context::cComponent"/>
<variables name="components">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_cQf0YfqUEeectLZKwQfI0A"/>
<details key="identifier" value="components"/>
</annotations>
</variables>
<variables name="container">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_cQf0YvqUEeectLZKwQfI0A"/>
<details key="identifier" value="container"/>
</annotations>
</variables>
<variables name="c_multiplicity">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gmDo8PqgEeectLZKwQfI0A"/>
<details key="identifier" value="c_multiplicity"/>
</annotations>
</variables>
<variables name="to_clone_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dqNIPqkEeectLZKwQfI0A"/>
<details key="identifier" value="to_clone_c"/>
</annotations>
</variables>
<variables name="c_index">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dqNIfqkEeectLZKwQfI0A"/>
<details key="identifier" value="c_index"/>
</annotations>
</variables>
<variables name="to_unfold_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dqNIvqkEeectLZKwQfI0A"/>
<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="_9phD8AKqEeiAPf1wPUl3Gw"/>
<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="_xudpYAK5EeiAPf1wPUl3Gw"/>
<details key="identifier" value="inst2pat_c"/>
</annotations>
</variables>
<invariants name="comp" predicate="components ∈ Model ↔ Component">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_cQf0Y_qUEeectLZKwQfI0A"/>
<details key="label" value="comp"/>
</annotations>
</invariants>
<invariants name="comp_finite" predicate="∀m·finite(components[{m}])">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_cQf0ZPqUEeectLZKwQfI0A"/>
<details key="label" value="comp_finite"/>
</annotations>
</invariants>
<invariants name="comp_not_shared" predicate="components∼ ∈ Component ⇸ Model">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_ip9Q0PqUEeectLZKwQfI0A"/>
<details key="label" value="comp_not_shared"/>
</annotations>
</invariants>
<invariants name="c_mult" predicate="c_multiplicity ∈ components[Pattern] → ℕ">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_GMp30PqWEeectLZKwQfI0A"/>
<details key="label" value="c_mult"/>
</annotations>
</invariants>
<invariants name="cont_ty" predicate="container ∈ ran(components) ⇸ ran(components)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gmDo8fqgEeectLZKwQfI0A"/>
<details key="label" value="cont_ty"/>
</annotations>
</invariants>
<invariants name="cont_ctr" predicate="components;container;components∼ ⊆ id">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gmDo8vqgEeectLZKwQfI0A"/>
<details key="label" value="cont_ctr"/>
</annotations>
</invariants>
<invariants name="acycl" predicate="∃f· f ∈ Component ↔ Component ∧ container ⊆ f ∧ f;f ⊆ f ∧ id ∩ f = ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_oXBHAPqkEeectLZKwQfI0A"/>
<details key="label" value="acycl"/>
</annotations>
</invariants>
<invariants name="irrefl" predicate="container ∩ id = ∅" theorem="true">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dqNI_qkEeectLZKwQfI0A"/>
<details key="label" value="irrefl"/>
</annotations>
</invariants>
<invariants name="to_unfold_c_in" predicate="to_unfold_c_in ∈ components[{Pat}] ↔ components[{Inst}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dqNJPqkEeectLZKwQfI0A"/>
<details key="label" value="to_unfold_c_in"/>
</annotations>
</invariants>
<invariants comment="From new component to original component" name="to_clone_c" predicate="to_clone_c ∈ components[{Inst}] ⇸ components[{Pat}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_1dq0MPqkEeectLZKwQfI0A"/>
<details key="label" value="to_clone_c"/>
<details key="comment" value="From new component to original component"/>
</annotations>
</invariants>
<invariants name="to_unfold_c" predicate="to_unfold_c ⊆ components[{Pat}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_l7KVEQA1EeictLZKwQfI0A"/>
<details key="label" value="to_unfold_c"/>
</annotations>
</invariants>
<invariants name="inst2pat_c_ty" predicate="inst2pat_c ∈ components[{Inst}] → components[{Pat}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_l7KVEgA1EeictLZKwQfI0A"/>
<details key="label" value="inst2pat_c_ty"/>
</annotations>
</invariants>
<invariants name="inst2pat_clone" predicate="to_clone_c ⊆ inst2pat_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_Hwdz4AKtEeiAPf1wPUl3Gw"/>
<details key="label" value="inst2pat_clone"/>
</annotations>
</invariants>
<invariants name="inst2pat_unfold_in" predicate="to_unfold_c_in;inst2pat_c ⊆ container">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_xudpYQK5EeiAPf1wPUl3Gw"/>
<details key="label" value="inst2pat_unfold_in"/>
</annotations>
</invariants>
<invariants name="pat2inst_unfold" predicate="to_unfold_c ∩ ran(inst2pat_c) = ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_fxu54ALAEeiAPf1wPUl3Gw"/>
<details key="label" value="pat2inst_unfold"/>
</annotations>
</invariants>
<invariants name="unfold_root" predicate="to_unfold_c ∩ dom(container) = ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_PaxdoAMwEei9ocE08JsPSw"/>
<details key="label" value="unfold_root"/>
</annotations>
</invariants>
<invariants name="unfold_in" predicate="dom(to_unfold_c_in) ⊆ dom(container)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_PaxdoQMwEei9ocE08JsPSw"/>
<details key="label" value="unfold_in"/>
</annotations>
</invariants>
<invariants name="unfold_unfold_in" predicate="to_unfold_c ∩ dom(to_unfold_c_in) = ∅" theorem="true">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_nieoAAMxEei9ocE08JsPSw"/>
<details key="label" value="unfold_unfold_in"/>
</annotations>
</invariants>
<invariants name="unfold_clone" predicate="to_unfold_c ∩ ran(to_clone_c) = ∅" theorem="true">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gxZD0AMzEei9ocE08JsPSw"/>
<details key="label" value="unfold_clone"/>
</annotations>
</invariants>
<invariants name="inst2pat_cont" predicate="inst2pat_c;container = container;inst2pat_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gxZD0QMzEei9ocE08JsPSw"/>
<details key="label" value="inst2pat_cont"/>
</annotations>
</invariants>
<invariants name="c_index_ty" predicate="c_index ∈ dom(inst2pat_c) → ℕ">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_gxZD0gMzEei9ocE08JsPSw"/>
<details key="label" value="c_index_ty"/>
</annotations>
</invariants>
<invariants name="to_clone_c_mult" predicate="∀c· c∈dom(inst2pat_c) ⇒ c_index(c) ∈ 1‥c_multiplicity(inst2pat_c(c))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_V6rHAAM1Eei9ocE08JsPSw"/>
<details key="label" value="to_clone_c_mult"/>
</annotations>
</invariants>
<variant expression="⋃ c · c∈(to_unfold_c ∪ ran(to_clone_c)) ∣ {c} × inter({ sc ∣ c∈sc ∧ container∼[sc] ⊆ sc})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_yRrOsAK6EeiAPf1wPUl3Gw"/>
</annotations>
</variant>
<events name="instanciate_pattern" extended="false">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="'"/>
<details key="label" value="instanciate_pattern"/>
</annotations>
<parameters name="inst_components">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1UjgPqmEeectLZKwQfI0A"/>
<details key="identifier" value="inst_components"/>
</annotations>
</parameters>
<parameters name="c_mult_others">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1UjgfqmEeectLZKwQfI0A"/>
<details key="identifier" value="c_mult_others"/>
</annotations>
</parameters>
<guards name="ic" predicate="inst_components ∈ components[{Pat}] ↔ components[{Mdl}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1UjgvqmEeectLZKwQfI0A"/>
<details key="label" value="ic"/>
</annotations>
</guards>
<guards name="icr" predicate="inst_components∼ ∈ components[{Mdl}] ⇸ components[{Pat}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Ujg_qmEeectLZKwQfI0A"/>
<details key="label" value="icr"/>
</annotations>
</guards>
<guards name="cm" predicate="c_mult_others ∈ components[{Pat}] ∖ dom(inst_components) → ℕ">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1UjhPqmEeectLZKwQfI0A"/>
<details key="label" value="cm"/>
</annotations>
</guards>
<actions name="c_mult" action="c_multiplicity ≔ c_multiplicity (c_mult_others {pc· pc ∈ dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1UjhfqmEeectLZKwQfI0A"/>
<details key="label" value="c_mult"/>
</annotations>
</actions>
<actions name="to_unfold_c" action="to_unfold_c ≔ (components[{Pat}] ∖ dom(container))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYt_qmEeectLZKwQfI0A"/>
<details key="label" value="to_unfold_c"/>
</annotations>
</actions>
<actions name="to_unfold_c_in" action="to_unfold_c_in ≔ ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYuPqmEeectLZKwQfI0A"/>
<details key="label" value="to_unfold_c_in"/>
</annotations>
</actions>
<actions name="components_inst" action="components ≔ {Inst} ⩤ components">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_xPqmEeectLZKwQfI0A"/>
<details key="label" value="components_inst"/>
</annotations>
</actions>
<actions name="container_inst" action="container ≔ components[{Inst}] ⩤ container">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_xfqmEeectLZKwQfI0A"/>
<details key="label" value="container_inst"/>
</annotations>
</actions>
<actions name="to_clone_c" action="to_clone_c ≔ ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_xvqmEeectLZKwQfI0A"/>
<details key="label" value="to_clone_c"/>
</annotations>
</actions>
<actions name="c_index" action="c_index ≔ ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_x_qmEeectLZKwQfI0A"/>
<details key="label" value="c_index"/>
</annotations>
</actions>
<actions name="pat2inst_c" action="inst2pat_c ≔ ∅">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_yPqmEeectLZKwQfI0A"/>
<details key="label" value="pat2inst_c"/>
</annotations>
</actions>
</events>
<events name="unfold_root_c" convergence="convergent" extended="false">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1VxoPqmEeectLZKwQfI0A"/>
<details key="label" value="unfold_root_c"/>
</annotations>
<parameters name="c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1VxofqmEeectLZKwQfI0A"/>
<details key="identifier" value="c"/>
</annotations>
</parameters>
<parameters name="new_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYsPqmEeectLZKwQfI0A"/>
<details key="identifier" value="new_c"/>
</annotations>
</parameters>
<guards name="c_ty" predicate="c ∈ to_unfold_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYsfqmEeectLZKwQfI0A"/>
<details key="label" value="c_ty"/>
</annotations>
</guards>
<guards name="new_c_ty" predicate="new_c ∈ 1‥c_multiplicity(c) ↣ Component ∖ ran(components)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYsvqmEeectLZKwQfI0A"/>
<details key="label" value="new_c_ty"/>
</annotations>
</guards>
<actions name="new_c_model" action="components ≔ components ∪ ({Inst}×ran(new_c))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm1PqmEeectLZKwQfI0A"/>
<details key="label" value="new_c_model"/>
</annotations>
</actions>
<actions name="to_clone_c" action="to_clone_c ≔ to_clone_c ∪ (ran(new_c)×{c})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm1fqmEeectLZKwQfI0A"/>
<details key="label" value="to_clone_c"/>
</annotations>
</actions>
<actions name="c_index" action="c_index ≔ c_index ∪ new_c∼">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm1vqmEeectLZKwQfI0A"/>
<details key="label" value="c_index"/>
</annotations>
</actions>
<actions name="to_unfold_c" action="to_unfold_c ≔ to_unfold_c ∖ {c}">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm1_qmEeectLZKwQfI0A"/>
<details key="label" value="to_unfold_c"/>
</annotations>
</actions>
<actions name="pat2inst_c" action="inst2pat_c ≔ inst2pat_c ∪ (ran(new_c) × {c})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1YN4PqmEeectLZKwQfI0A"/>
<details key="label" value="pat2inst_c"/>
</annotations>
</actions>
</events>
<events comment="Variante: spécifier directement la fermeture transitive." name="clone_c" convergence="convergent" extended="false">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYufqmEeectLZKwQfI0A"/>
<details key="label" value="clone_c"/>
<details key="comment" value="Variante: spécifier directement la fermeture transitive."/>
</annotations>
<parameters name="c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_wPqmEeectLZKwQfI0A"/>
<details key="identifier" value="c"/>
</annotations>
</parameters>
<guards name="c_ty" predicate="c ∈ dom(to_clone_c)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYs_qmEeectLZKwQfI0A"/>
<details key="label" value="c_ty"/>
</annotations>
</guards>
<actions name="to_unfold_c_in" action="to_unfold_c_in ≔ to_unfold_c_in ∪ (container∼[{to_clone_c(c)}] × {c})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1YN4fqmEeectLZKwQfI0A"/>
<details key="label" value="to_unfold_c_in"/>
</annotations>
</actions>
<actions name="cloned_c" action="to_clone_c ≔ {c} ⩤ to_clone_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1YN4vqmEeectLZKwQfI0A"/>
<details key="label" value="cloned_c"/>
</annotations>
</actions>
</events>
<events comment="réplication des éléments composants // A voir: duplication du contenu de C" name="unfold_node_c" convergence="convergent" extended="false">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_yfqmEeectLZKwQfI0A"/>
<details key="label" value="unfold_node_c"/>
<details key="comment" value="réplication des éléments composants // A voir: duplication du contenu de C"/>
</annotations>
<parameters name="c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_wfqmEeectLZKwQfI0A"/>
<details key="identifier" value="c"/>
</annotations>
</parameters>
<parameters name="dest">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm0PqmEeectLZKwQfI0A"/>
<details key="identifier" value="dest"/>
</annotations>
</parameters>
<parameters name="new_c">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm0fqmEeectLZKwQfI0A"/>
<details key="identifier" value="new_c"/>
</annotations>
</parameters>
<guards name="c_ty" predicate="c ↦ dest ∈ to_unfold_c_in">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYtPqmEeectLZKwQfI0A"/>
<details key="label" value="c_ty"/>
</annotations>
</guards>
<guards name="new_c_ty" predicate="new_c ∈ 1‥c_multiplicity(c) ↣ Component ∖ ran(components)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYtfqmEeectLZKwQfI0A"/>
<details key="label" value="new_c_ty"/>
</annotations>
</guards>
<actions name="new_c_model" action="components ≔ components ∪ ({Inst}×ran(new_c))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_lyJKIPreEeerIsS6OyYQ4w"/>
<details key="label" value="new_c_model"/>
</annotations>
</actions>
<actions name="new_c_container" action="container ≔ container ∪ (ran(new_c)×{dest})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_rQ0PgftxEeectLZKwQfI0A"/>
<details key="label" value="new_c_container"/>
</annotations>
</actions>
<actions name="to_clone_c" action="to_clone_c ≔ to_clone_c ∪ (ran(new_c)×{c})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_xQWRoP01EeeINffjS36taQ"/>
<details key="label" value="to_clone_c"/>
</annotations>
</actions>
<actions name="c_index" action="c_index ≔ c_index ∪ new_c∼">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_254qkAA2EeictLZKwQfI0A"/>
<details key="label" value="c_index"/>
</annotations>
</actions>
<actions name="to_unfold_c_in" action="to_unfold_c_in ≔ to_unfold_c_in ∖ {c ↦ dest}">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_254qkQA2EeictLZKwQfI0A"/>
<details key="label" value="to_unfold_c_in"/>
</annotations>
</actions>
<actions name="pat2inst_c" action="inst2pat_c ≔ inst2pat_c ∪ (ran(new_c) × {c})">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_i0ODcAIQEei9ocE08JsPSw"/>
<details key="label" value="pat2inst_c"/>
</annotations>
</actions>
</events>
<events comment="transformation du modèle" name="apply_pattern" extended="false">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm2PqmEeectLZKwQfI0A"/>
<details key="label" value="apply_pattern"/>
<details key="comment" value="transformation du modèle"/>
</annotations>
<parameters comment="instance mapping" name="inst_components">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_rQ0PgPtxEeectLZKwQfI0A"/>
<details key="identifier" value="inst_components"/>
<details key="comment" value="instance mapping"/>
</annotations>
</parameters>
<parameters name="new_components">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_h4VmkAKrEeiAPf1wPUl3Gw"/>
<details key="identifier" value="new_components"/>
</annotations>
</parameters>
<guards name="ic" predicate="inst_components ∈ components[{Inst}] ⤔ components[{Mdl}]">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1WYtvqmEeectLZKwQfI0A"/>
<details key="label" value="ic"/>
</annotations>
</guards>
<guards name="nc" predicate="new_components ∈ components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_wvqmEeectLZKwQfI0A"/>
<details key="label" value="nc"/>
</annotations>
</guards>
<guards name="acycl_inst_components" predicate="dom(inst_components) ◁ container;inst_components ⊆ inst_components;container">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1W_w_qmEeectLZKwQfI0A"/>
<details key="label" value="acycl_inst_components"/>
</annotations>
</guards>
<guards name="acycl_container" predicate="container[dom(inst_components)] ⊆ dom(inst_components)">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_O1Xm0vqmEeectLZKwQfI0A"/>
<details key="label" value="acycl_container"/>
</annotations>
</guards>
<actions name="m" action="components ≔ components ∪ ({Mdl}×ran(new_components))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_reToAAK7EeiAPf1wPUl3Gw"/>
<details key="label" value="m"/>
</annotations>
</actions>
<actions name="f" action="container ≔ container ∪ ((inst_components ∪ new_components)∼;container;(inst_components ∪ new_components))">
<annotations source="http:///org/eventb/core/RodinInternalAnnotations">
<details key="name" value="_szQBsAK7EeiAPf1wPUl3Gw"/>
<details key="label" value="f"/>
</annotations>
</actions>
</events>
</machine:Machine>