equal
deleted
inserted
replaced
54 lemma HasToK_partition: "[| s \<in> HasTok i; s \<in> HasTok j |] ==> i=j" |
54 lemma HasToK_partition: "[| s \<in> HasTok i; s \<in> HasTok j |] ==> i=j" |
55 by (unfold HasTok_def, auto) |
55 by (unfold HasTok_def, auto) |
56 |
56 |
57 lemma not_E_eq: "(s \<notin> E i) = (s \<in> H i | s \<in> T i)" |
57 lemma not_E_eq: "(s \<notin> E i) = (s \<in> H i | s \<in> T i)" |
58 apply (simp add: H_def E_def T_def) |
58 apply (simp add: H_def E_def T_def) |
59 apply (case_tac "proc s i", auto) |
59 apply (cases "proc s i", auto) |
60 done |
60 done |
61 |
61 |
62 lemma (in Token) token_stable: "F \<in> stable (-(E i) \<union> (HasTok i))" |
62 lemma (in Token) token_stable: "F \<in> stable (-(E i) \<union> (HasTok i))" |
63 apply (unfold stable_def) |
63 apply (unfold stable_def) |
64 apply (rule constrains_weaken) |
64 apply (rule constrains_weaken) |
81 apply (auto simp add: mod_Suc mod_geq) |
81 apply (auto simp add: mod_Suc mod_geq) |
82 apply (auto split add: nat_diff_split simp add: linorder_neq_iff mod_geq) |
82 apply (auto split add: nat_diff_split simp add: linorder_neq_iff mod_geq) |
83 done |
83 done |
84 |
84 |
85 text{*From "A Logic for Concurrent Programming", but not used in Chapter 4. |
85 text{*From "A Logic for Concurrent Programming", but not used in Chapter 4. |
86 Note the use of @{text case_tac}. Reasoning about leadsTo takes practice!*} |
86 Note the use of @{text cases}. Reasoning about leadsTo takes practice!*} |
87 lemma (in Token) TR7_nodeOrder: |
87 lemma (in Token) TR7_nodeOrder: |
88 "[| i<N; j<N |] ==> |
88 "[| i<N; j<N |] ==> |
89 F \<in> (HasTok i) leadsTo ({s. (token s, i) \<in> nodeOrder j} \<union> HasTok j)" |
89 F \<in> (HasTok i) leadsTo ({s. (token s, i) \<in> nodeOrder j} \<union> HasTok j)" |
90 apply (case_tac "i=j") |
90 apply (cases "i=j") |
91 apply (blast intro: subset_imp_leadsTo) |
91 apply (blast intro: subset_imp_leadsTo) |
92 apply (rule TR7 [THEN leadsTo_weaken_R]) |
92 apply (rule TR7 [THEN leadsTo_weaken_R]) |
93 apply (auto simp add: HasTok_def nodeOrder_eq) |
93 apply (auto simp add: HasTok_def nodeOrder_eq) |
94 done |
94 done |
95 |
95 |