<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<org.eventb.core.contextFile org.eventb.core.configuration="org.eventb.core.fwd;de.prob.symbolic.ctxBase;de.prob.units.mchBase;org.eventb.codegen.ui.cgConfig" org.eventb.texttools.text_lastmodified="1516796717157" org.eventb.texttools.text_representation="context pattern_safety extends cLink&#10;&#10;constants replicator ballot_box safety_model safety_comp safety_container toy_model toy_container toy_app toy_inp_1 toy_inp_2 toy_output components_var container_var f_container_var inst_components_par c_mult_others_par c_multiplicity_var to_unfold_c_var&#10;&#10;axioms&#10;  @replicator_ty replicator ∈ Component // safety pattern&#10;  @ballot_box_ty ballot_box ∈ Component&#10;  @safety_comp safety_comp ∈ Component&#10;  @all_diff_component replicator ≠ ballot_box ∧ replicator ≠ safety_comp ∧ ballot_box ≠ safety_comp&#10;  @safety_container safety_container = {replicator ↦ safety_comp, ballot_box ↦ safety_comp}&#10;  @toy_container_ty toy_container ∈ Component ⇸ Component&#10;  @toy_container_def toy_container = ∅&#10;  @safety_model safety_model ∈ Model&#10;  @toy_model_ty toy_model ∈ Model&#10;  @safety_diff_toy safety_model ≠ toy_model&#10;  @Model_def Model = {safety_model,toy_model}&#10;  @toy_app_ty toy_app ∈ Component // toy application&#10;  @toy_inp_1_ty toy_inp_1 ∈ IPort&#10;  @toy_inp_2_ty toy_inp_2 ∈ IPort&#10;  @toy_output_ty toy_output ∈ OPort&#10;  @components_var_def components_var = {safety_model ↦ {replicator,ballot_box,safety_comp},&#10;                                        toy_model ↦   {toy_app}&#10;                                       }&#10;  @container_var_def container_var = {safety_model ↦ safety_container, toy_model ↦ toy_container}&#10;  @f_container_var f_container_var = {replicator ↦ safety_comp, ballot_box ↦ safety_comp}&#10;  theorem @f_acycl ∀m· container_var(m) ⊆ f_container_var&#10;                   ∧ f_container_var;f_container_var ⊆ f_container_var&#10;                   ∧ id ∩ f_container_var = ∅&#10;  @inst_components_def inst_components_par = {safety_comp ↦ toy_app}&#10;  @c_mult_others_def c_mult_others_par = {replicator ↦ 3, ballot_box ↦ 1} // pattern instantiation&#10;  @c_muliplicity_var_def c_multiplicity_var = {safety_model ↦ {safety_comp ↦ 1, replicator ↦ 3, ballot_box ↦ 1}}&#10;  theorem @c_multiplicity_assign&#10; &#9;&#9;c_multiplicity_var(safety_model) = c_mult_others_par&#10; &#9;&#9;&#9; {pc· pc ∈ dom(inst_components_par) ∣ pc ↦ card(inst_components_par[{pc}])}&#10;  @to_unfold_c_var_def to_unfold_c_var = {safety_comp}&#10;  theorem @to_unfold_c_var&#10;  &#9;&#9;to_unfold_c_var = (components_var(safety_model) ∖ dom(container_var(safety_model)))&#10;end&#10;&#10;" version="3">
<org.eventb.core.extendsContext name="_-yB9QAAPEeis7pYemx4WBQ" org.eventb.core.target="cLink"/>
<org.eventb.core.constant name="_-yB9QQAPEeis7pYemx4WBQ" org.eventb.core.identifier="replicator"/>
<org.eventb.core.constant name="_-yCkUAAPEeis7pYemx4WBQ" org.eventb.core.identifier="ballot_box"/>
<org.eventb.core.constant name="_-yCkUQAPEeis7pYemx4WBQ" org.eventb.core.identifier="safety_model"/>
<org.eventb.core.axiom name="_-yCkUgAPEeis7pYemx4WBQ" org.eventb.core.comment="safety pattern" org.eventb.core.label="replicator_ty" org.eventb.core.predicate="replicator ∈ Component"/>
<org.eventb.core.axiom name="_-yCkUwAPEeis7pYemx4WBQ" org.eventb.core.label="ballot_box_ty" org.eventb.core.predicate="ballot_box ∈ Component"/>
<org.eventb.core.axiom name="_-yCkVAAPEeis7pYemx4WBQ" org.eventb.core.label="safety_comp" org.eventb.core.predicate="safety_comp ∈ Component"/>
<org.eventb.core.axiom name="_-yCkVQAPEeis7pYemx4WBQ" org.eventb.core.label="all_diff_component" org.eventb.core.predicate="replicator ≠ ballot_box ∧ replicator ≠ safety_comp ∧ ballot_box ≠ safety_comp"/>
<org.eventb.core.constant name="_H1oEsAAQEeis7pYemx4WBQ" org.eventb.core.identifier="safety_comp"/>
<org.eventb.core.constant name="_oim4QAAQEeis7pYemx4WBQ" org.eventb.core.identifier="safety_container"/>
<org.eventb.core.constant name="_oim4QQAQEeis7pYemx4WBQ" org.eventb.core.identifier="toy_model"/>
<org.eventb.core.constant name="_oim4QgAQEeis7pYemx4WBQ" org.eventb.core.identifier="toy_container"/>
<org.eventb.core.constant name="_oim4QwAQEeis7pYemx4WBQ" org.eventb.core.identifier="toy_app"/>
<org.eventb.core.axiom name="_oim4RAAQEeis7pYemx4WBQ" org.eventb.core.label="safety_container" org.eventb.core.predicate="safety_container = {replicator ↦ safety_comp, ballot_box ↦ safety_comp}"/>
<org.eventb.core.axiom name="_oim4RQAQEeis7pYemx4WBQ" org.eventb.core.label="toy_container_ty" org.eventb.core.predicate="toy_container ∈ Component ⇸ Component"/>
<org.eventb.core.axiom name="_oim4RgAQEeis7pYemx4WBQ" org.eventb.core.label="toy_container_def" org.eventb.core.predicate="toy_container = ∅"/>
<org.eventb.core.axiom name="_oinfUAAQEeis7pYemx4WBQ" org.eventb.core.label="safety_model" org.eventb.core.predicate="safety_model ∈ Model"/>
<org.eventb.core.constant name="_9c9V0AAREeis7pYemx4WBQ" org.eventb.core.identifier="toy_inp_1"/>
<org.eventb.core.constant name="_9c9V0QAREeis7pYemx4WBQ" org.eventb.core.identifier="toy_inp_2"/>
<org.eventb.core.axiom name="_9c9V0gAREeis7pYemx4WBQ" org.eventb.core.label="toy_model_ty" org.eventb.core.predicate="toy_model ∈ Model"/>
<org.eventb.core.axiom name="_9c9V0wAREeis7pYemx4WBQ" org.eventb.core.label="safety_diff_toy" org.eventb.core.predicate="safety_model ≠ toy_model"/>
<org.eventb.core.axiom name="_9c9V1AAREeis7pYemx4WBQ" org.eventb.core.label="Model_def" org.eventb.core.predicate="Model = {safety_model,toy_model}"/>
<org.eventb.core.axiom name="_9c984AAREeis7pYemx4WBQ" org.eventb.core.comment="toy application" org.eventb.core.label="toy_app_ty" org.eventb.core.predicate="toy_app ∈ Component"/>
<org.eventb.core.constant name="_9lz6YAASEeis7pYemx4WBQ" org.eventb.core.identifier="toy_output"/>
<org.eventb.core.constant name="_9lz6YQASEeis7pYemx4WBQ" org.eventb.core.identifier="components_var"/>
<org.eventb.core.axiom name="_9lz6YgASEeis7pYemx4WBQ" org.eventb.core.label="toy_inp_1_ty" org.eventb.core.predicate="toy_inp_1 ∈ IPort"/>
<org.eventb.core.constant name="_kRNbAAEBEei-meqqkXX9bA" org.eventb.core.identifier="container_var"/>
<org.eventb.core.constant name="_kRNbAQEBEei-meqqkXX9bA" org.eventb.core.identifier="f_container_var"/>
<org.eventb.core.constant name="_kRNbAgEBEei-meqqkXX9bA" org.eventb.core.identifier="inst_components_par"/>
<org.eventb.core.constant name="_kRNbAwEBEei-meqqkXX9bA" org.eventb.core.identifier="c_mult_others_par"/>
<org.eventb.core.constant name="_kROCEAEBEei-meqqkXX9bA" org.eventb.core.identifier="c_multiplicity_var"/>
<org.eventb.core.constant name="_kROCEQEBEei-meqqkXX9bA" org.eventb.core.identifier="to_unfold_c_var"/>
<org.eventb.core.axiom name="_kROCEgEBEei-meqqkXX9bA" org.eventb.core.label="toy_inp_2_ty" org.eventb.core.predicate="toy_inp_2 ∈ IPort"/>
<org.eventb.core.axiom name="_kROCEwEBEei-meqqkXX9bA" org.eventb.core.label="toy_output_ty" org.eventb.core.predicate="toy_output ∈ OPort"/>
<org.eventb.core.axiom name="_kROCFAEBEei-meqqkXX9bA" org.eventb.core.label="components_var_def" org.eventb.core.predicate="components_var = {safety_model ↦ {replicator,ballot_box,safety_comp},&#10;                                        toy_model ↦   {toy_app}&#10;                                       }"/>
<org.eventb.core.axiom name="_kROCFQEBEei-meqqkXX9bA" org.eventb.core.label="container_var_def" org.eventb.core.predicate="container_var = {safety_model ↦ safety_container, toy_model ↦ toy_container}"/>
<org.eventb.core.axiom name="_kROCFgEBEei-meqqkXX9bA" org.eventb.core.label="f_container_var" org.eventb.core.predicate="f_container_var = {replicator ↦ safety_comp, ballot_box ↦ safety_comp}"/>
<org.eventb.core.axiom name="_kROCFwEBEei-meqqkXX9bA" org.eventb.core.label="f_acycl" org.eventb.core.predicate="∀m· container_var(m) ⊆ f_container_var&#10;                   ∧ f_container_var;f_container_var ⊆ f_container_var&#10;                   ∧ id ∩ f_container_var = ∅" org.eventb.core.theorem="true"/>
<org.eventb.core.axiom name="_kROpIAEBEei-meqqkXX9bA" org.eventb.core.label="inst_components_def" org.eventb.core.predicate="inst_components_par = {safety_comp ↦ toy_app}"/>
<org.eventb.core.axiom name="_kROpIQEBEei-meqqkXX9bA" org.eventb.core.comment="pattern instantiation" org.eventb.core.label="c_mult_others_def" org.eventb.core.predicate="c_mult_others_par = {replicator ↦ 3, ballot_box ↦ 1}"/>
<org.eventb.core.axiom name="_kROpIgEBEei-meqqkXX9bA" org.eventb.core.label="c_muliplicity_var_def" org.eventb.core.predicate="c_multiplicity_var = {safety_model ↦ {safety_comp ↦ 1, replicator ↦ 3, ballot_box ↦ 1}}"/>
<org.eventb.core.axiom name="_kROpIwEBEei-meqqkXX9bA" org.eventb.core.label="c_multiplicity_assign&#10;" org.eventb.core.predicate="c_multiplicity_var(safety_model) = c_mult_others_par&#10; &#9;&#9;&#9; {pc· pc ∈ dom(inst_components_par) ∣ pc ↦ card(inst_components_par[{pc}])}" org.eventb.core.theorem="true"/>
<org.eventb.core.axiom name="_kROpJAEBEei-meqqkXX9bA" org.eventb.core.label="to_unfold_c_var_def" org.eventb.core.predicate="to_unfold_c_var = {safety_comp}"/>
<org.eventb.core.axiom name="_kROpJQEBEei-meqqkXX9bA" org.eventb.core.label="to_unfold_c_var&#10;" org.eventb.core.predicate="to_unfold_c_var = (components_var(safety_model) ∖ dom(container_var(safety_model)))" org.eventb.core.theorem="true"/>
</org.eventb.core.contextFile>
