|
|
<?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>
|
|
|
|