129 \ {s. k < size (rel s)})"; |
129 \ {s. k < size (rel s)})"; |
130 by (rtac guaranteesI 1); |
130 by (rtac guaranteesI 1); |
131 by (Clarify_tac 1); |
131 by (Clarify_tac 1); |
132 by (rtac Stable_transient_reachable_LeadsTo 1); |
132 by (rtac Stable_transient_reachable_LeadsTo 1); |
133 by (res_inst_tac [("k", "k")] transient_lemma 2); |
133 by (res_inst_tac [("k", "k")] transient_lemma 2); |
134 be Disjoint_States_eq 2; |
134 by (etac Disjoint_States_eq 2); |
135 by (force_tac (claset() addDs [impOfSubs Increasing_size, |
135 by (force_tac (claset() addDs [impOfSubs Increasing_size, |
136 impOfSubs Increasing_Stable_less], |
136 impOfSubs Increasing_Stable_less], |
137 simpset()) 1); |
137 simpset()) 1); |
138 by (rtac (make_elim (lemma1 RS guaranteesD)) 1); |
138 by (rtac (make_elim (lemma1 RS guaranteesD)) 1); |
139 by (Blast_tac 1); |
139 by (Blast_tac 1); |
140 be Disjoint_States_eq 1; |
140 by (etac Disjoint_States_eq 1); |
141 by (auto_tac (claset(), |
141 by (auto_tac (claset(), |
142 simpset() addsimps [Invariant_eq_always, giv_meets_ask_def])); |
142 simpset() addsimps [Invariant_eq_always, giv_meets_ask_def])); |
143 by (ALLGOALS Force_tac); |
143 by (ALLGOALS Force_tac); |
144 qed "client_correct"; |
144 qed "client_correct"; |