equal
deleted
inserted
replaced
104 add: executions_def is_execution_fragment_def par_def starts_of_def |
104 add: executions_def is_execution_fragment_def par_def starts_of_def |
105 trans_of_def filter_oseq_def |
105 trans_of_def filter_oseq_def |
106 split add: option.split) |
106 split add: option.split) |
107 done |
107 done |
108 |
108 |
109 declare split_if [split del] if_weak_cong [cong del] |
109 declare if_split [split del] if_weak_cong [cong del] |
110 |
110 |
111 (*Composition of possibility-mappings *) |
111 (*Composition of possibility-mappings *) |
112 lemma fxg_is_weak_pmap_of_product_IOA: |
112 lemma fxg_is_weak_pmap_of_product_IOA: |
113 "[| is_weak_pmap f C1 A1; |
113 "[| is_weak_pmap f C1 A1; |
114 externals(asig_of(A1))=externals(asig_of(C1)); |
114 externals(asig_of(A1))=externals(asig_of(C1)); |
124 apply (rule allI)+ |
124 apply (rule allI)+ |
125 apply (rule imp_conj_lemma) |
125 apply (rule imp_conj_lemma) |
126 apply (simp (no_asm) add: externals_of_par_extra) |
126 apply (simp (no_asm) add: externals_of_par_extra) |
127 apply (simp (no_asm) add: par_def) |
127 apply (simp (no_asm) add: par_def) |
128 apply (simp add: trans_of_def) |
128 apply (simp add: trans_of_def) |
129 apply (simplesubst split_if) |
129 apply (simplesubst if_split) |
130 apply (rule conjI) |
130 apply (rule conjI) |
131 apply (rule impI) |
131 apply (rule impI) |
132 apply (erule disjE) |
132 apply (erule disjE) |
133 (* case 1 a:e(A1) | a:e(A2) *) |
133 (* case 1 a:e(A1) | a:e(A2) *) |
134 apply (simp add: comp1_reachable comp2_reachable ext_is_act) |
134 apply (simp add: comp1_reachable comp2_reachable ext_is_act) |
141 apply (rule impI) |
141 apply (rule impI) |
142 apply (subgoal_tac "a~:externals (asig_of (A1)) & a~:externals (asig_of (A2))") |
142 apply (subgoal_tac "a~:externals (asig_of (A1)) & a~:externals (asig_of (A2))") |
143 (* delete auxiliary subgoal *) |
143 (* delete auxiliary subgoal *) |
144 prefer 2 |
144 prefer 2 |
145 apply force |
145 apply force |
146 apply (simp (no_asm) add: conj_disj_distribR cong add: conj_cong split add: split_if) |
146 apply (simp (no_asm) add: conj_disj_distribR cong add: conj_cong split add: if_split) |
147 apply (tactic {* |
147 apply (tactic {* |
148 REPEAT((resolve_tac @{context} [conjI, impI] 1 ORELSE eresolve_tac @{context} [conjE] 1) THEN |
148 REPEAT((resolve_tac @{context} [conjI, impI] 1 ORELSE eresolve_tac @{context} [conjE] 1) THEN |
149 asm_full_simp_tac(@{context} addsimps [@{thm comp1_reachable}, @{thm comp2_reachable}]) 1) *}) |
149 asm_full_simp_tac(@{context} addsimps [@{thm comp1_reachable}, @{thm comp2_reachable}]) 1) *}) |
150 done |
150 done |
151 |
151 |
170 apply (rule allI)+ |
170 apply (rule allI)+ |
171 apply (rule imp_conj_lemma) |
171 apply (rule imp_conj_lemma) |
172 apply (simp (no_asm) add: rename_def) |
172 apply (simp (no_asm) add: rename_def) |
173 apply (simp add: externals_def asig_inputs_def asig_outputs_def asig_of_def trans_of_def) |
173 apply (simp add: externals_def asig_inputs_def asig_outputs_def asig_of_def trans_of_def) |
174 apply safe |
174 apply safe |
175 apply (simplesubst split_if) |
175 apply (simplesubst if_split) |
176 apply (rule conjI) |
176 apply (rule conjI) |
177 apply (rule impI) |
177 apply (rule impI) |
178 apply (erule disjE) |
178 apply (erule disjE) |
179 apply (erule exE) |
179 apply (erule exE) |
180 apply (erule conjE) |
180 apply (erule conjE) |
202 apply (erule conjE) |
202 apply (erule conjE) |
203 apply (cut_tac C = "C" and g = "g" and s = "s" in reachable_rename_ioa) |
203 apply (cut_tac C = "C" and g = "g" and s = "s" in reachable_rename_ioa) |
204 apply auto |
204 apply auto |
205 done |
205 done |
206 |
206 |
207 declare split_if [split] if_weak_cong [cong] |
207 declare if_split [split] if_weak_cong [cong] |
208 |
208 |
209 end |
209 end |