equal
deleted
inserted
replaced
13 |
13 |
14 |
14 |
15 (*Safety property 1: ask, rel are increasing*) |
15 (*Safety property 1: ask, rel are increasing*) |
16 Goal "Client: UNIV guarantees[funPair rel ask] \ |
16 Goal "Client: UNIV guarantees[funPair rel ask] \ |
17 \ Increasing ask Int Increasing rel"; |
17 \ Increasing ask Int Increasing rel"; |
18 by (safe_tac (claset() addSIs [guaranteesI,increasing_imp_Increasing])); |
|
19 by (auto_tac |
18 by (auto_tac |
20 (claset(), |
19 (claset() addSIs [increasing_imp_Increasing], |
21 simpset() addsimps [impOfSubs preserves_subset_increasing, |
20 simpset() addsimps [guar_def, impOfSubs preserves_subset_increasing])); |
22 Join_increasing])); |
|
23 by (auto_tac (claset(), simpset() addsimps [increasing_def])); |
21 by (auto_tac (claset(), simpset() addsimps [increasing_def])); |
24 by (ALLGOALS constrains_tac); |
22 by (ALLGOALS constrains_tac); |
25 by Auto_tac; |
23 by Auto_tac; |
26 qed "increasing_ask_rel"; |
24 qed "increasing_ask_rel"; |
27 |
25 |
68 by Auto_tac; |
66 by Auto_tac; |
69 qed "Join_Stable_rel_le_giv"; |
67 qed "Join_Stable_rel_le_giv"; |
70 |
68 |
71 Goal "[| Client Join G : Increasing giv; G : preserves rel |] \ |
69 Goal "[| Client Join G : Increasing giv; G : preserves rel |] \ |
72 \ ==> Client Join G : Always {s. rel s <= giv s}"; |
70 \ ==> Client Join G : Always {s. rel s <= giv s}"; |
73 by (rtac AlwaysI 1); |
71 by (force_tac (claset() addIs [AlwaysI, Join_Stable_rel_le_giv], simpset()) 1); |
74 by (rtac Join_Stable_rel_le_giv 2); |
|
75 by Auto_tac; |
|
76 qed "Join_Always_rel_le_giv"; |
72 qed "Join_Always_rel_le_giv"; |
77 |
73 |
78 Goal "Client : transient {s. rel s = k & k<h & h <= giv s & h pfixGe ask s}"; |
74 Goal "Client : transient {s. rel s = k & k<h & h <= giv s & h pfixGe ask s}"; |
79 by (res_inst_tac [("act", "rel_act")] transientI 1); |
75 by (res_inst_tac [("act", "rel_act")] transientI 1); |
80 by (auto_tac (claset(), |
76 by (auto_tac (claset(), |
144 by (blast_tac (claset() addIs [client_progress_lemma]) 1); |
140 by (blast_tac (claset() addIs [client_progress_lemma]) 1); |
145 qed "client_progress"; |
141 qed "client_progress"; |
146 |
142 |
147 (*This shows that the Client won't alter other variables in any state |
143 (*This shows that the Client won't alter other variables in any state |
148 that it is combined with*) |
144 that it is combined with*) |
149 Goal "Client : preserves extra"; |
145 Goal "Client : preserves dummy"; |
150 by (rewtac preserves_def); |
146 by (rewtac preserves_def); |
151 by Auto_tac; |
147 by Auto_tac; |
152 by (constrains_tac 1); |
148 by (constrains_tac 1); |
153 by Auto_tac; |
149 by Auto_tac; |
154 qed "client_preserves_extra"; |
150 qed "client_preserves_dummy"; |
155 |
151 |
156 |
152 |
157 (** Obsolete lemmas from first version of the Client **) |
153 (** Obsolete lemmas from first version of the Client **) |
158 |
154 |
159 Goal "Client: stable {s. size (rel s) <= size (giv s)}"; |
155 Goal "Client: stable {s. size (rel s) <= size (giv s)}"; |