author | urbanc |
Tue, 13 Dec 2005 18:11:21 +0100 | |
changeset 18396 | b3e7da94b51f |
parent 17288 | aa3833fb7bee |
permissions | -rw-r--r-- |
4530 | 1 |
(* Title: HOL/IOA/Solve.ML |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
2 |
ID: $Id$ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
3 |
Author: Tobias Nipkow & Konrad Slind |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
4 |
Copyright 1994 TU Muenchen |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
5 |
*) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
6 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
7 |
Addsimps [mk_trace_thm,trans_in_actions]; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
8 |
|
5069 | 9 |
Goalw [is_weak_pmap_def,traces_def] |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
10 |
"!!f. [| IOA(C); IOA(A); externals(asig_of(C)) = externals(asig_of(A)); \ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
11 |
\ is_weak_pmap f C A |] ==> traces(C) <= traces(A)"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
12 |
|
4089 | 13 |
by (simp_tac(simpset() addsimps [has_trace_def])1); |
5132 | 14 |
by Safe_tac; |
4828 | 15 |
by (rename_tac "ex1 ex2" 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
16 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
17 |
(* choose same trace, therefore same NF *) |
4772
8c7e7eaffbdf
split_all_tac now fails if there is nothing to split
oheimb
parents:
4681
diff
changeset
|
18 |
by (res_inst_tac[("x","mk_trace C ex1")] exI 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
19 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
20 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
21 |
(* give execution of abstract automata *) |
4772
8c7e7eaffbdf
split_all_tac now fails if there is nothing to split
oheimb
parents:
4681
diff
changeset
|
22 |
by (res_inst_tac[("x","(mk_trace A ex1,%i. f (ex2 i))")] bexI 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
23 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
24 |
(* Traces coincide *) |
4772
8c7e7eaffbdf
split_all_tac now fails if there is nothing to split
oheimb
parents:
4681
diff
changeset
|
25 |
by (asm_simp_tac (simpset() addsimps [mk_trace_def,filter_oseq_idemp])1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
26 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
27 |
(* Use lemma *) |
7499 | 28 |
by (ftac states_of_exec_reachable 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
29 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
30 |
(* Now show that it's an execution *) |
4089 | 31 |
by (asm_full_simp_tac(simpset() addsimps [executions_def]) 1); |
4153 | 32 |
by Safe_tac; |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
33 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
34 |
(* Start states map to start states *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
35 |
by (dtac bspec 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
36 |
by (atac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
37 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
38 |
(* Show that it's an execution fragment *) |
4089 | 39 |
by (asm_full_simp_tac (simpset() addsimps [is_execution_fragment_def])1); |
4153 | 40 |
by Safe_tac; |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
41 |
|
4772
8c7e7eaffbdf
split_all_tac now fails if there is nothing to split
oheimb
parents:
4681
diff
changeset
|
42 |
by (eres_inst_tac [("x","ex2 n")] allE 1); |
8c7e7eaffbdf
split_all_tac now fails if there is nothing to split
oheimb
parents:
4681
diff
changeset
|
43 |
by (eres_inst_tac [("x","ex2 (Suc n)")] allE 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
44 |
by (eres_inst_tac [("x","a")] allE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
45 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
46 |
qed "trace_inclusion"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
47 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
48 |
(* Lemmata *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
49 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
50 |
val prems = goal HOL.thy "(P ==> Q-->R) ==> P&Q --> R"; |
4153 | 51 |
by (fast_tac (claset() addDs prems) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
52 |
val imp_conj_lemma = result(); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
53 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
54 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
55 |
(* fist_order_tautology of externals_of_par *) |
17288 | 56 |
goal (theory "IOA") "a:externals(asig_of(A1||A2)) = \ |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
57 |
\ (a:externals(asig_of(A1)) & a:externals(asig_of(A2)) | \ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
58 |
\ a:externals(asig_of(A1)) & a~:externals(asig_of(A2)) | \ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
59 |
\ a~:externals(asig_of(A1)) & a:externals(asig_of(A2)))"; |
4089 | 60 |
by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
61 |
by (Fast_tac 1); |
17288 | 62 |
val externals_of_par_extra = result(); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
63 |
|
5143
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
paulson
parents:
5132
diff
changeset
|
64 |
Goal "[| reachable (C1||C2) s |] ==> reachable C1 (fst s)"; |
17288 | 65 |
by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
66 |
by (etac bexE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
67 |
by (res_inst_tac [("x", |
3842 | 68 |
"(filter_oseq (%a. a:actions(asig_of(C1))) \ |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
69 |
\ (fst ex), \ |
3842 | 70 |
\ %i. fst (snd ex i))")] bexI 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
71 |
(* fst(s) is in projected execution *) |
6916 | 72 |
by (Force_tac 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
73 |
(* projected execution is indeed an execution *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
74 |
by (asm_full_simp_tac |
6916 | 75 |
(simpset() delcongs [if_weak_cong] |
17288 | 76 |
addsimps [executions_def,is_execution_fragment_def, |
77 |
par_def,starts_of_def,trans_of_def,filter_oseq_def] |
|
6916 | 78 |
addsplits [option.split]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
79 |
qed"comp1_reachable"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
80 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
81 |
|
17288 | 82 |
(* Exact copy of proof of comp1_reachable for the second |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
83 |
component of a parallel composition. *) |
5143
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
paulson
parents:
5132
diff
changeset
|
84 |
Goal "[| reachable (C1||C2) s|] ==> reachable C2 (snd s)"; |
17288 | 85 |
by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
86 |
by (etac bexE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
87 |
by (res_inst_tac [("x", |
3842 | 88 |
"(filter_oseq (%a. a:actions(asig_of(C2)))\ |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
89 |
\ (fst ex), \ |
3842 | 90 |
\ %i. snd (snd ex i))")] bexI 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
91 |
(* fst(s) is in projected execution *) |
6916 | 92 |
by (Force_tac 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
93 |
(* projected execution is indeed an execution *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
94 |
by (asm_full_simp_tac |
6916 | 95 |
(simpset() delcongs [if_weak_cong] |
17288 | 96 |
addsimps [executions_def,is_execution_fragment_def, |
97 |
par_def,starts_of_def,trans_of_def,filter_oseq_def] |
|
6916 | 98 |
addsplits [option.split]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
99 |
qed"comp2_reachable"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
100 |
|
6916 | 101 |
Delsplits [split_if]; Delcongs [if_weak_cong]; |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
102 |
|
6916 | 103 |
(* THIS THEOREM IS NEVER USED (lcp) |
104 |
Composition of possibility-mappings *) |
|
105 |
Goalw [is_weak_pmap_def] |
|
106 |
"[| is_weak_pmap f C1 A1; \ |
|
107 |
\ externals(asig_of(A1))=externals(asig_of(C1));\ |
|
108 |
\ is_weak_pmap g C2 A2; \ |
|
109 |
\ externals(asig_of(A2))=externals(asig_of(C2)); \ |
|
110 |
\ compat_ioas C1 C2; compat_ioas A1 A2 |] \ |
|
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
111 |
\ ==> is_weak_pmap (%p.(f(fst(p)),g(snd(p)))) (C1||C2) (A1||A2)"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
112 |
by (rtac conjI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
113 |
(* start_states *) |
4089 | 114 |
by (asm_full_simp_tac (simpset() addsimps [par_def, starts_of_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
115 |
(* transitions *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
116 |
by (REPEAT (rtac allI 1)); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
117 |
by (rtac imp_conj_lemma 1); |
4089 | 118 |
by (simp_tac (simpset() addsimps [externals_of_par_extra]) 1); |
119 |
by (simp_tac (simpset() addsimps [par_def]) 1); |
|
120 |
by (asm_full_simp_tac (simpset() addsimps [trans_of_def]) 1); |
|
4831 | 121 |
by (stac split_if 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
122 |
by (rtac conjI 1); |
17288 | 123 |
by (rtac impI 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
124 |
by (etac disjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
125 |
(* case 1 a:e(A1) | a:e(A2) *) |
4089 | 126 |
by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable, |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
127 |
ext_is_act]) 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
128 |
by (etac disjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
129 |
(* case 2 a:e(A1) | a~:e(A2) *) |
4089 | 130 |
by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable, |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
131 |
ext_is_act,ext1_ext2_is_not_act2]) 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
132 |
(* case 3 a:~e(A1) | a:e(A2) *) |
4089 | 133 |
by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable, |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
134 |
ext_is_act,ext1_ext2_is_not_act1]) 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
135 |
(* case 4 a:~e(A1) | a~:e(A2) *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
136 |
by (rtac impI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
137 |
by (subgoal_tac "a~:externals(asig_of(A1)) & a~:externals(asig_of(A2))" 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
138 |
(* delete auxiliary subgoal *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
139 |
by (Asm_full_simp_tac 2); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
140 |
by (Fast_tac 2); |
4089 | 141 |
by (simp_tac (simpset() addsimps [conj_disj_distribR] addcongs [conj_cong] |
4831 | 142 |
addsplits [split_if]) 1); |
4153 | 143 |
by (REPEAT((resolve_tac [conjI,impI] 1 ORELSE etac conjE 1) THEN |
17288 | 144 |
asm_full_simp_tac(simpset() addsimps[comp1_reachable, |
145 |
comp2_reachable])1)); |
|
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
146 |
qed"fxg_is_weak_pmap_of_product_IOA"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
147 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
148 |
|
5143
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
paulson
parents:
5132
diff
changeset
|
149 |
Goal "[| reachable (rename C g) s |] ==> reachable C s"; |
17288 | 150 |
by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
151 |
by (etac bexE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
152 |
by (res_inst_tac [("x", |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
153 |
"((%i. case (fst ex i) \ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
154 |
\ of None => None\ |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
155 |
\ | Some(x) => g x) ,snd ex)")] bexI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
156 |
by (Simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
157 |
(* execution is indeed an execution of C *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
158 |
by (asm_full_simp_tac |
4089 | 159 |
(simpset() addsimps [executions_def,is_execution_fragment_def, |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
160 |
par_def,starts_of_def,trans_of_def,rename_def] |
5184 | 161 |
addsplits [option.split]) 1); |
4089 | 162 |
by (best_tac (claset() addSDs [spec] addDs [sym] addss (simpset())) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
163 |
qed"reachable_rename_ioa"; |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
164 |
|
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
165 |
|
5143
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
paulson
parents:
5132
diff
changeset
|
166 |
Goal "[| is_weak_pmap f C A |]\ |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
167 |
\ ==> (is_weak_pmap f (rename C g) (rename A g))"; |
4089 | 168 |
by (asm_full_simp_tac (simpset() addsimps [is_weak_pmap_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
169 |
by (rtac conjI 1); |
4089 | 170 |
by (asm_full_simp_tac (simpset() addsimps [rename_def,starts_of_def]) 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
171 |
by (REPEAT (rtac allI 1)); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
172 |
by (rtac imp_conj_lemma 1); |
4089 | 173 |
by (simp_tac (simpset() addsimps [rename_def]) 1); |
174 |
by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_inputs_def,asig_outputs_def,asig_of_def,trans_of_def]) 1); |
|
4153 | 175 |
by Safe_tac; |
4831 | 176 |
by (stac split_if 1); |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
177 |
by (rtac conjI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
178 |
by (rtac impI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
179 |
by (etac disjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
180 |
by (etac exE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
181 |
by (etac conjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
182 |
(* x is input *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
183 |
by (dtac sym 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
184 |
by (dtac sym 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
185 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
186 |
by (REPEAT (hyp_subst_tac 1)); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
187 |
by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
188 |
by (assume_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
189 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
190 |
(* x is output *) |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
191 |
by (etac exE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
192 |
by (etac conjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
193 |
by (dtac sym 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
194 |
by (dtac sym 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
195 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
196 |
by (REPEAT (hyp_subst_tac 1)); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
197 |
by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
198 |
by (assume_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
199 |
by (Asm_full_simp_tac 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
200 |
(* x is internal *) |
17288 | 201 |
by (simp_tac (simpset() addsimps [de_Morgan_disj, de_Morgan_conj, not_ex] |
202 |
addcongs [conj_cong]) 1); |
|
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
203 |
by (rtac impI 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
204 |
by (etac conjE 1); |
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
205 |
by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1); |
4477
b3e5857d8d99
New Auto_tac (by Oheimb), and new syntax (without parens), and expandshort
paulson
parents:
4153
diff
changeset
|
206 |
by Auto_tac; |
3078
984866a8f905
old IOA meta theory (see also new version in HOLCF/IOA/meta_theory);
mueller
parents:
diff
changeset
|
207 |
qed"rename_through_pmap"; |
4681 | 208 |
|
4831 | 209 |
Addsplits [split_if]; |
6916 | 210 |
Addcongs [if_weak_cong]; |