179 lemma lemma_1: |
179 lemma lemma_1: |
180 "[|is_ref_map f C A; ext C = ext A|] ==> |
180 "[|is_ref_map f C A; ext C = ext A|] ==> |
181 !s. reachable C s & is_exec_frag C (s,xs) --> |
181 !s. reachable C s & is_exec_frag C (s,xs) --> |
182 mk_trace C$xs = mk_trace A$(snd (corresp_ex A f (s,xs)))" |
182 mk_trace C$xs = mk_trace A$(snd (corresp_ex A f (s,xs)))" |
183 apply (unfold corresp_ex_def) |
183 apply (unfold corresp_ex_def) |
184 apply (tactic {* pair_induct_tac "xs" [thm "is_exec_frag_def"] 1 *}) |
184 apply (tactic {* pair_induct_tac @{context} "xs" [@{thm is_exec_frag_def}] 1 *}) |
185 (* cons case *) |
185 (* cons case *) |
186 apply (auto simp add: mk_traceConc) |
186 apply (auto simp add: mk_traceConc) |
187 apply (frule reachable.reachable_n) |
187 apply (frule reachable.reachable_n) |
188 apply assumption |
188 apply assumption |
189 apply (erule_tac x = "y" in allE) |
189 apply (erule_tac x = "y" in allE) |
208 (!s .is_exec_frag A (s,xs) & is_exec_frag A (t,ys) & |
208 (!s .is_exec_frag A (s,xs) & is_exec_frag A (t,ys) & |
209 t = laststate (s,xs) |
209 t = laststate (s,xs) |
210 --> is_exec_frag A (s,xs @@ ys))" |
210 --> is_exec_frag A (s,xs @@ ys))" |
211 |
211 |
212 apply (rule impI) |
212 apply (rule impI) |
213 apply (tactic {* Seq_Finite_induct_tac 1 *}) |
213 apply (tactic {* Seq_Finite_induct_tac @{context} 1 *}) |
214 (* main case *) |
214 (* main case *) |
215 apply (auto simp add: split_paired_all) |
215 apply (auto simp add: split_paired_all) |
216 done |
216 done |
217 |
217 |
218 |
218 |
271 |
271 |
272 (* give execution of abstract automata *) |
272 (* give execution of abstract automata *) |
273 apply (rule_tac x = "corresp_ex A f ex" in bexI) |
273 apply (rule_tac x = "corresp_ex A f ex" in bexI) |
274 |
274 |
275 (* Traces coincide, Lemma 1 *) |
275 (* Traces coincide, Lemma 1 *) |
276 apply (tactic {* pair_tac "ex" 1 *}) |
276 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
277 apply (erule lemma_1 [THEN spec, THEN mp]) |
277 apply (erule lemma_1 [THEN spec, THEN mp]) |
278 apply assumption+ |
278 apply assumption+ |
279 apply (simp add: executions_def reachable.reachable_0) |
279 apply (simp add: executions_def reachable.reachable_0) |
280 |
280 |
281 (* corresp_ex is execution, Lemma 2 *) |
281 (* corresp_ex is execution, Lemma 2 *) |
282 apply (tactic {* pair_tac "ex" 1 *}) |
282 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
283 apply (simp add: executions_def) |
283 apply (simp add: executions_def) |
284 (* start state *) |
284 (* start state *) |
285 apply (rule conjI) |
285 apply (rule conjI) |
286 apply (simp add: is_ref_map_def corresp_ex_def) |
286 apply (simp add: is_ref_map_def corresp_ex_def) |
287 (* is-execution-fragment *) |
287 (* is-execution-fragment *) |
322 apply auto |
322 apply auto |
323 apply (rule_tac x = "corresp_ex A f ex" in exI) |
323 apply (rule_tac x = "corresp_ex A f ex" in exI) |
324 apply auto |
324 apply auto |
325 |
325 |
326 (* Traces coincide, Lemma 1 *) |
326 (* Traces coincide, Lemma 1 *) |
327 apply (tactic {* pair_tac "ex" 1 *}) |
327 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
328 apply (erule lemma_1 [THEN spec, THEN mp]) |
328 apply (erule lemma_1 [THEN spec, THEN mp]) |
329 apply assumption+ |
329 apply assumption+ |
330 apply (simp add: executions_def reachable.reachable_0) |
330 apply (simp add: executions_def reachable.reachable_0) |
331 |
331 |
332 (* corresp_ex is execution, Lemma 2 *) |
332 (* corresp_ex is execution, Lemma 2 *) |
333 apply (tactic {* pair_tac "ex" 1 *}) |
333 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
334 apply (simp add: executions_def) |
334 apply (simp add: executions_def) |
335 (* start state *) |
335 (* start state *) |
336 apply (rule conjI) |
336 apply (rule conjI) |
337 apply (simp add: is_ref_map_def corresp_ex_def) |
337 apply (simp add: is_ref_map_def corresp_ex_def) |
338 (* is-execution-fragment *) |
338 (* is-execution-fragment *) |
349 apply auto |
349 apply auto |
350 apply (rule_tac x = "corresp_ex A f ex" in exI) |
350 apply (rule_tac x = "corresp_ex A f ex" in exI) |
351 apply auto |
351 apply auto |
352 |
352 |
353 (* Traces coincide, Lemma 1 *) |
353 (* Traces coincide, Lemma 1 *) |
354 apply (tactic {* pair_tac "ex" 1 *}) |
354 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
355 apply (erule lemma_1 [THEN spec, THEN mp]) |
355 apply (erule lemma_1 [THEN spec, THEN mp]) |
356 apply (simp (no_asm) add: externals_def) |
356 apply (simp (no_asm) add: externals_def) |
357 apply (auto)[1] |
357 apply (auto)[1] |
358 apply (simp add: executions_def reachable.reachable_0) |
358 apply (simp add: executions_def reachable.reachable_0) |
359 |
359 |
360 (* corresp_ex is execution, Lemma 2 *) |
360 (* corresp_ex is execution, Lemma 2 *) |
361 apply (tactic {* pair_tac "ex" 1 *}) |
361 apply (tactic {* pair_tac @{context} "ex" 1 *}) |
362 apply (simp add: executions_def) |
362 apply (simp add: executions_def) |
363 (* start state *) |
363 (* start state *) |
364 apply (rule conjI) |
364 apply (rule conjI) |
365 apply (simp add: is_ref_map_def corresp_ex_def) |
365 apply (simp add: is_ref_map_def corresp_ex_def) |
366 (* is-execution-fragment *) |
366 (* is-execution-fragment *) |
367 apply (erule lemma_2 [THEN spec, THEN mp]) |
367 apply (erule lemma_2 [THEN spec, THEN mp]) |
368 apply (simp add: reachable.reachable_0) |
368 apply (simp add: reachable.reachable_0) |
369 |
369 |
370 done |
370 done |
371 |
371 |
372 |
|
373 end |
372 end |