98 Goalw [preserves_def, stable_def, constrains_def] |
98 Goalw [preserves_def, stable_def, constrains_def] |
99 "[| F : preserves v; act : Acts F; (s,s') : act |] ==> v s = v s'"; |
99 "[| F : preserves v; act : Acts F; (s,s') : act |] ==> v s = v s'"; |
100 by (Force_tac 1); |
100 by (Force_tac 1); |
101 qed "preserves_imp_eq"; |
101 qed "preserves_imp_eq"; |
102 |
102 |
103 Goal "(F Join G : preserves v) = (F : preserves v & G : preserves v)"; |
103 Goalw [preserves_def] |
104 by (simp_tac (simpset() addsimps [Join_stable, preserves_def]) 1); |
104 "(F Join G : preserves v) = (F : preserves v & G : preserves v)"; |
105 by (Blast_tac 1); |
105 by Auto_tac; |
106 qed "Join_preserves"; |
106 qed "Join_preserves"; |
107 |
107 |
108 Goal "(JOIN I F : preserves v) = (ALL i:I. F i : preserves v)"; |
108 Goal "(JOIN I F : preserves v) = (ALL i:I. F i : preserves v)"; |
109 by (simp_tac (simpset() addsimps [JN_stable, preserves_def]) 1); |
109 by (simp_tac (simpset() addsimps [JN_stable, preserves_def]) 1); |
110 by (Blast_tac 1); |
110 by (Blast_tac 1); |
171 (** Some lemmas used only in Client.ML **) |
171 (** Some lemmas used only in Client.ML **) |
172 |
172 |
173 Goal "[| F : stable {s. P (v s) (w s)}; \ |
173 Goal "[| F : stable {s. P (v s) (w s)}; \ |
174 \ G : preserves v; G : preserves w |] \ |
174 \ G : preserves v; G : preserves w |] \ |
175 \ ==> F Join G : stable {s. P (v s) (w s)}"; |
175 \ ==> F Join G : stable {s. P (v s) (w s)}"; |
176 by (asm_simp_tac (simpset() addsimps [Join_stable]) 1); |
176 by (Asm_simp_tac 1); |
177 by (subgoal_tac "G: preserves (funPair v w)" 1); |
177 by (subgoal_tac "G: preserves (funPair v w)" 1); |
178 by (Asm_simp_tac 2); |
178 by (Asm_simp_tac 2); |
179 by (dres_inst_tac [("P1", "split ?Q")] |
179 by (dres_inst_tac [("P1", "split ?Q")] |
180 (impOfSubs preserves_subset_stable) 1); |
180 (impOfSubs preserves_subset_stable) 1); |
181 by Auto_tac; |
181 by Auto_tac; |
184 Goal "[| F : stable {s. v s <= w s}; G : preserves v; \ |
184 Goal "[| F : stable {s. v s <= w s}; G : preserves v; \ |
185 \ F Join G : Increasing w |] \ |
185 \ F Join G : Increasing w |] \ |
186 \ ==> F Join G : Stable {s. v s <= w s}"; |
186 \ ==> F Join G : Stable {s. v s <= w s}"; |
187 by (auto_tac (claset(), |
187 by (auto_tac (claset(), |
188 simpset() addsimps [stable_def, Stable_def, Increasing_def, |
188 simpset() addsimps [stable_def, Stable_def, Increasing_def, |
189 Constrains_def, Join_constrains, all_conj_distrib])); |
189 Constrains_def, all_conj_distrib])); |
190 by (blast_tac (claset() addIs [constrains_weaken]) 1); |
190 by (blast_tac (claset() addIs [constrains_weaken]) 1); |
191 (*The G case remains*) |
191 (*The G case remains*) |
192 by (auto_tac (claset(), |
192 by (auto_tac (claset(), |
193 simpset() addsimps [preserves_def, stable_def, constrains_def])); |
193 simpset() addsimps [preserves_def, stable_def, constrains_def])); |
194 by (case_tac "act: Acts F" 1); |
194 by (case_tac "act: Acts F" 1); |