equal
deleted
inserted
replaced
5 |
5 |
6 Weak Fairness versions of transient, ensures, leadsTo. |
6 Weak Fairness versions of transient, ensures, leadsTo. |
7 |
7 |
8 From Misra, "A Logic for Concurrent Programming", 1994 |
8 From Misra, "A Logic for Concurrent Programming", 1994 |
9 *) |
9 *) |
10 |
|
11 open WFair; |
|
12 |
|
13 Goal "Union(B) Int A = Union((%C. C Int A)``B)"; |
|
14 by (Blast_tac 1); |
|
15 qed "Int_Union_Union"; |
|
16 |
10 |
17 |
11 |
18 (*** transient ***) |
12 (*** transient ***) |
19 |
13 |
20 Goalw [stable_def, constrains_def, transient_def] |
14 Goalw [stable_def, constrains_def, transient_def] |
119 \ !!A B. ensures Acts A B ==> P A B; \ |
113 \ !!A B. ensures Acts A B ==> P A B; \ |
120 \ !!A B C. [| leadsTo Acts A B; P A B; leadsTo Acts B C; P B C |] \ |
114 \ !!A B C. [| leadsTo Acts A B; P A B; leadsTo Acts B C; P B C |] \ |
121 \ ==> P A C; \ |
115 \ ==> P A C; \ |
122 \ !!B S. ALL A:S. leadsTo Acts A B & P A B ==> P (Union S) B \ |
116 \ !!B S. ALL A:S. leadsTo Acts A B & P A B ==> P (Union S) B \ |
123 \ |] ==> P za zb"; |
117 \ |] ==> P za zb"; |
124 br (major RS leadsto.induct) 1; |
118 by (rtac (major RS leadsto.induct) 1); |
125 by (REPEAT (blast_tac (claset() addIs prems) 1)); |
119 by (REPEAT (blast_tac (claset() addIs prems) 1)); |
126 qed "leadsTo_induct"; |
120 qed "leadsTo_induct"; |
127 |
121 |
128 |
122 |
129 Goal "[| A<=B; id: Acts |] ==> leadsTo Acts A B"; |
123 Goal "[| A<=B; id: Acts |] ==> leadsTo Acts A B"; |