177 (* a: inp A *) |
177 (* a: inp A *) |
178 by (case_tac "a:act B" 1); |
178 by (case_tac "a:act B" 1); |
179 (* a:act B *) |
179 (* a:act B *) |
180 by (eres_inst_tac [("x","a")] allE 1); |
180 by (eres_inst_tac [("x","a")] allE 1); |
181 by (Asm_full_simp_tac 1); |
181 by (Asm_full_simp_tac 1); |
182 bd inpAAactB_is_inpBoroutB 1; |
182 by (dtac inpAAactB_is_inpBoroutB 1); |
183 ba 1; |
183 by (assume_tac 1); |
184 ba 1; |
184 by (assume_tac 1); |
185 by (eres_inst_tac [("x","a")] allE 1); |
185 by (eres_inst_tac [("x","a")] allE 1); |
186 by (Asm_full_simp_tac 1); |
186 by (Asm_full_simp_tac 1); |
187 by (eres_inst_tac [("x","aa")] allE 1); |
187 by (eres_inst_tac [("x","aa")] allE 1); |
188 by (eres_inst_tac [("x","b")] allE 1); |
188 by (eres_inst_tac [("x","b")] allE 1); |
189 be exE 1; |
189 by (etac exE 1); |
190 be exE 1; |
190 by (etac exE 1); |
191 by (res_inst_tac [("x","(s2,s2a)")] exI 1); |
191 by (res_inst_tac [("x","(s2,s2a)")] exI 1); |
192 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
192 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
193 (* a~: act B*) |
193 (* a~: act B*) |
194 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
194 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
195 by (eres_inst_tac [("x","a")] allE 1); |
195 by (eres_inst_tac [("x","a")] allE 1); |
196 by (Asm_full_simp_tac 1); |
196 by (Asm_full_simp_tac 1); |
197 by (eres_inst_tac [("x","aa")] allE 1); |
197 by (eres_inst_tac [("x","aa")] allE 1); |
198 be exE 1; |
198 by (etac exE 1); |
199 by (res_inst_tac [("x","(s2,b)")] exI 1); |
199 by (res_inst_tac [("x","(s2,b)")] exI 1); |
200 by (Asm_full_simp_tac 1); |
200 by (Asm_full_simp_tac 1); |
201 |
201 |
202 (* a:inp B *) |
202 (* a:inp B *) |
203 by (case_tac "a:act A" 1); |
203 by (case_tac "a:act A" 1); |
204 (* a:act A *) |
204 (* a:act A *) |
205 by (eres_inst_tac [("x","a")] allE 1); |
205 by (eres_inst_tac [("x","a")] allE 1); |
206 by (eres_inst_tac [("x","a")] allE 1); |
206 by (eres_inst_tac [("x","a")] allE 1); |
207 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
207 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
208 by (forw_inst_tac [("A2","A")] (compat_commute RS iffD1) 1); |
208 by (forw_inst_tac [("A2","A")] (compat_commute RS iffD1) 1); |
209 bd inpAAactB_is_inpBoroutB 1; |
209 by (dtac inpAAactB_is_inpBoroutB 1); |
210 back(); |
210 back(); |
211 ba 1; |
211 by (assume_tac 1); |
212 ba 1; |
212 by (assume_tac 1); |
213 by (Asm_full_simp_tac 1); |
213 by (Asm_full_simp_tac 1); |
214 by (rotate_tac ~1 1); |
214 by (rotate_tac ~1 1); |
215 by (Asm_full_simp_tac 1); |
215 by (Asm_full_simp_tac 1); |
216 by (eres_inst_tac [("x","aa")] allE 1); |
216 by (eres_inst_tac [("x","aa")] allE 1); |
217 by (eres_inst_tac [("x","b")] allE 1); |
217 by (eres_inst_tac [("x","b")] allE 1); |
218 be exE 1; |
218 by (etac exE 1); |
219 be exE 1; |
219 by (etac exE 1); |
220 by (res_inst_tac [("x","(s2,s2a)")] exI 1); |
220 by (res_inst_tac [("x","(s2,s2a)")] exI 1); |
221 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
221 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
222 (* a~: act B*) |
222 (* a~: act B*) |
223 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
223 by (asm_full_simp_tac (simpset() addsimps [inp_is_act]) 1); |
224 by (eres_inst_tac [("x","a")] allE 1); |
224 by (eres_inst_tac [("x","a")] allE 1); |
225 by (Asm_full_simp_tac 1); |
225 by (Asm_full_simp_tac 1); |
226 by (eres_inst_tac [("x","a")] allE 1); |
226 by (eres_inst_tac [("x","a")] allE 1); |
227 by (Asm_full_simp_tac 1); |
227 by (Asm_full_simp_tac 1); |
228 by (eres_inst_tac [("x","b")] allE 1); |
228 by (eres_inst_tac [("x","b")] allE 1); |
229 be exE 1; |
229 by (etac exE 1); |
230 by (res_inst_tac [("x","(aa,s2)")] exI 1); |
230 by (res_inst_tac [("x","(aa,s2)")] exI 1); |
231 by (Asm_full_simp_tac 1); |
231 by (Asm_full_simp_tac 1); |
232 qed"input_enabled_par"; |
232 qed"input_enabled_par"; |
233 |
233 |
234 (* ---------------------------------------------------------------------------------- *) |
234 (* ---------------------------------------------------------------------------------- *) |
287 |
287 |
288 goal thy "act (restrict A acts) = act A"; |
288 goal thy "act (restrict A acts) = act A"; |
289 by (simp_tac (simpset() addsimps [actions_def,asig_internals_def, |
289 by (simp_tac (simpset() addsimps [actions_def,asig_internals_def, |
290 asig_outputs_def,asig_inputs_def,externals_def,asig_of_def,restrict_def, |
290 asig_outputs_def,asig_inputs_def,externals_def,asig_of_def,restrict_def, |
291 restrict_asig_def]) 1); |
291 restrict_asig_def]) 1); |
292 auto(); |
292 by (Auto_tac()); |
293 qed"acts_restrict"; |
293 qed"acts_restrict"; |
294 |
294 |
295 goal thy "starts_of(restrict ioa acts) = starts_of(ioa) & \ |
295 goal thy "starts_of(restrict ioa acts) = starts_of(ioa) & \ |
296 \ trans_of(restrict ioa acts) = trans_of(ioa) & \ |
296 \ trans_of(restrict ioa acts) = trans_of(ioa) & \ |
297 \ reachable (restrict ioa acts) s = reachable ioa s & \ |
297 \ reachable (restrict ioa acts) s = reachable ioa s & \ |
415 goalw thy [is_trans_of_def,restrict_def,restrict_asig_def] |
415 goalw thy [is_trans_of_def,restrict_def,restrict_asig_def] |
416 "!!A. is_trans_of A ==> is_trans_of (rename A f)"; |
416 "!!A. is_trans_of A ==> is_trans_of (rename A f)"; |
417 by (asm_full_simp_tac (simpset() addsimps [actions_def,trans_of_def, |
417 by (asm_full_simp_tac (simpset() addsimps [actions_def,trans_of_def, |
418 asig_internals_def,asig_outputs_def,asig_inputs_def,externals_def, |
418 asig_internals_def,asig_outputs_def,asig_inputs_def,externals_def, |
419 asig_of_def,rename_def,rename_set_def]) 1); |
419 asig_of_def,rename_def,rename_set_def]) 1); |
420 auto(); |
420 by (Auto_tac()); |
421 qed"is_trans_of_rename"; |
421 qed"is_trans_of_rename"; |
422 |
422 |
423 goal thy "!! A. [| is_asig_of A; is_asig_of B; compatible A B|] \ |
423 goal thy "!! A. [| is_asig_of A; is_asig_of B; compatible A B|] \ |
424 \ ==> is_asig_of (A||B)"; |
424 \ ==> is_asig_of (A||B)"; |
425 by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def,asig_of_par, |
425 by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def,asig_of_par, |
426 asig_comp_def,compatible_def,asig_internals_def,asig_outputs_def, |
426 asig_comp_def,compatible_def,asig_internals_def,asig_outputs_def, |
427 asig_inputs_def,actions_def,is_asig_def]) 1); |
427 asig_inputs_def,actions_def,is_asig_def]) 1); |
428 by (asm_full_simp_tac (simpset() addsimps [asig_of_def]) 1); |
428 by (asm_full_simp_tac (simpset() addsimps [asig_of_def]) 1); |
429 auto(); |
429 by (Auto_tac()); |
430 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
430 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
431 qed"is_asig_of_par"; |
431 qed"is_asig_of_par"; |
432 |
432 |
433 goalw thy [is_asig_of_def,is_asig_def,asig_of_def,restrict_def,restrict_asig_def, |
433 goalw thy [is_asig_of_def,is_asig_def,asig_of_def,restrict_def,restrict_asig_def, |
434 asig_internals_def,asig_outputs_def,asig_inputs_def,externals_def,o_def] |
434 asig_internals_def,asig_outputs_def,asig_inputs_def,externals_def,o_def] |
435 "!! A. is_asig_of A ==> is_asig_of (restrict A f)"; |
435 "!! A. is_asig_of A ==> is_asig_of (restrict A f)"; |
436 by (Asm_full_simp_tac 1); |
436 by (Asm_full_simp_tac 1); |
437 auto(); |
437 by (Auto_tac()); |
438 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
438 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
439 qed"is_asig_of_restrict"; |
439 qed"is_asig_of_restrict"; |
440 |
440 |
441 goal thy "!! A. is_asig_of A ==> is_asig_of (rename A f)"; |
441 goal thy "!! A. is_asig_of A ==> is_asig_of (rename A f)"; |
442 by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def, |
442 by (asm_full_simp_tac (simpset() addsimps [is_asig_of_def, |
443 rename_def,rename_set_def,asig_internals_def,asig_outputs_def, |
443 rename_def,rename_set_def,asig_internals_def,asig_outputs_def, |
444 asig_inputs_def,actions_def,is_asig_def,asig_of_def]) 1); |
444 asig_inputs_def,actions_def,is_asig_def,asig_of_def]) 1); |
445 auto(); |
445 by (Auto_tac()); |
446 by (dres_inst_tac [("s","Some xb")] sym 1); |
446 by (dres_inst_tac [("s","Some xb")] sym 1); |
447 by (rotate_tac ~1 1); |
447 by (rotate_tac ~1 1); |
448 by (Asm_full_simp_tac 1); |
448 by (Asm_full_simp_tac 1); |
449 by (best_tac (set_cs addEs [equalityCE]) 1); |
449 by (best_tac (set_cs addEs [equalityCE]) 1); |
450 by (dres_inst_tac [("s","Some xb")] sym 1); |
450 by (dres_inst_tac [("s","Some xb")] sym 1); |
464 |
464 |
465 goalw thy [compatible_def] |
465 goalw thy [compatible_def] |
466 "!! A. [|compatible A B; compatible A C |]==> compatible A (B||C)"; |
466 "!! A. [|compatible A B; compatible A C |]==> compatible A (B||C)"; |
467 by (asm_full_simp_tac (simpset() addsimps [internals_of_par, |
467 by (asm_full_simp_tac (simpset() addsimps [internals_of_par, |
468 outputs_of_par,actions_of_par]) 1); |
468 outputs_of_par,actions_of_par]) 1); |
469 auto(); |
469 by (Auto_tac()); |
470 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
470 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
471 qed"compatible_par"; |
471 qed"compatible_par"; |
472 |
472 |
473 (* FIX: better derive by previous one and compat_commute *) |
473 (* FIX: better derive by previous one and compat_commute *) |
474 goalw thy [compatible_def] |
474 goalw thy [compatible_def] |
475 "!! A. [|compatible A C; compatible B C |]==> compatible (A||B) C"; |
475 "!! A. [|compatible A C; compatible B C |]==> compatible (A||B) C"; |
476 by (asm_full_simp_tac (simpset() addsimps [internals_of_par, |
476 by (asm_full_simp_tac (simpset() addsimps [internals_of_par, |
477 outputs_of_par,actions_of_par]) 1); |
477 outputs_of_par,actions_of_par]) 1); |
478 auto(); |
478 by (Auto_tac()); |
479 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
479 by (REPEAT (best_tac (set_cs addEs [equalityCE]) 1)); |
480 qed"compatible_par2"; |
480 qed"compatible_par2"; |
481 |
481 |
482 goalw thy [compatible_def] |
482 goalw thy [compatible_def] |
483 "!! A. [| compatible A B; (ext B - S) Int ext A = {}|] \ |
483 "!! A. [| compatible A B; (ext B - S) Int ext A = {}|] \ |