equal
deleted
inserted
replaced
7 Misra, "A Logic for Concurrent Programming", 1994 |
7 Misra, "A Logic for Concurrent Programming", 1994 |
8 *) |
8 *) |
9 |
9 |
10 (*Trivial, two-process case*) |
10 (*Trivial, two-process case*) |
11 Goalw [constrains_def, stable_def] |
11 Goalw [constrains_def, stable_def] |
12 "[| F : constrains (A Int B) A; F : constrains (B Int A) B |] \ |
12 "[| F : (A Int B) co A; F : (B Int A) co B |] \ |
13 \ ==> F : stable (A Int B)"; |
13 \ ==> F : stable (A Int B)"; |
14 by (Blast_tac 1); |
14 by (Blast_tac 1); |
15 result(); |
15 result(); |
16 |
16 |
17 |
17 |
67 qed "INT_le_Suc_equals_Int"; |
67 qed "INT_le_Suc_equals_Int"; |
68 |
68 |
69 |
69 |
70 (*The final deadlock example*) |
70 (*The final deadlock example*) |
71 val [zeroprem, allprem] = goalw thy [stable_def] |
71 val [zeroprem, allprem] = goalw thy [stable_def] |
72 "[| F : constrains (A 0 Int A (Suc n)) (A 0); \ |
72 "[| F : (A 0 Int A (Suc n)) co (A 0); \ |
73 \ ALL i: atMost n. F : constrains (A(Suc i) Int A i) \ |
73 \ ALL i: atMost n. F : (A(Suc i) Int A i) co \ |
74 \ (-A i Un A(Suc i)) |] \ |
74 \ (-A i Un A(Suc i)) |] \ |
75 \ ==> F : stable (INT i: atMost (Suc n). A i)"; |
75 \ ==> F : stable (INT i: atMost (Suc n). A i)"; |
76 |
76 |
77 by (rtac ([zeroprem, allprem RS ball_constrains_INT] MRS |
77 by (rtac ([zeroprem, allprem RS ball_constrains_INT] MRS |
78 constrains_Int RS constrains_weaken) 1); |
78 constrains_Int RS constrains_weaken) 1); |
79 by (simp_tac (simpset() addsimps [Collect_le_Int_equals, |
79 by (simp_tac (simpset() addsimps [Collect_le_Int_equals, |