51 "_prime" => "_after" |
51 "_prime" => "_after" |
52 "_unchanged" == "CONST unch" |
52 "_unchanged" == "CONST unch" |
53 "_SqAct" == "CONST SqAct" |
53 "_SqAct" == "CONST SqAct" |
54 "_AnAct" == "CONST AnAct" |
54 "_AnAct" == "CONST AnAct" |
55 "_Enabled" == "CONST enabled" |
55 "_Enabled" == "CONST enabled" |
56 "w |= [A]_v" <= "_SqAct A v w" |
56 "w \<Turnstile> [A]_v" <= "_SqAct A v w" |
57 "w |= <A>_v" <= "_AnAct A v w" |
57 "w \<Turnstile> <A>_v" <= "_AnAct A v w" |
58 "s |= Enabled A" <= "_Enabled A s" |
58 "s \<Turnstile> Enabled A" <= "_Enabled A s" |
59 "w |= unchanged f" <= "_unchanged f w" |
59 "w \<Turnstile> unchanged f" <= "_unchanged f w" |
60 |
60 |
61 axiomatization where |
61 axiomatization where |
62 unl_before: "(ACT $v) (s,t) \<equiv> v s" and |
62 unl_before: "(ACT $v) (s,t) \<equiv> v s" and |
63 unl_after: "(ACT v$) (s,t) \<equiv> v t" and |
63 unl_after: "(ACT v$) (s,t) \<equiv> v t" and |
64 |
64 |
159 apply (erule conjE) |
159 apply (erule conjE) |
160 apply simp |
160 apply simp |
161 done |
161 done |
162 |
162 |
163 lemma square_simulation: |
163 lemma square_simulation: |
164 "\<And>f. \<lbrakk> \<turnstile> unchanged f & \<not>B \<longrightarrow> unchanged g; |
164 "\<And>f. \<lbrakk> \<turnstile> unchanged f \<and> \<not>B \<longrightarrow> unchanged g; |
165 \<turnstile> A & \<not>unchanged g \<longrightarrow> B |
165 \<turnstile> A \<and> \<not>unchanged g \<longrightarrow> B |
166 \<rbrakk> \<Longrightarrow> \<turnstile> [A]_f \<longrightarrow> [B]_g" |
166 \<rbrakk> \<Longrightarrow> \<turnstile> [A]_f \<longrightarrow> [B]_g" |
167 apply clarsimp |
167 apply clarsimp |
168 apply (erule squareE) |
168 apply (erule squareE) |
169 apply (auto simp add: square_def) |
169 apply (auto simp add: square_def) |
170 done |
170 done |
208 apply (rule min [THEN enabledE]) |
208 apply (rule min [THEN enabledE]) |
209 apply (rule enabledI [action_use]) |
209 apply (rule enabledI [action_use]) |
210 apply (erule maj) |
210 apply (erule maj) |
211 done |
211 done |
212 |
212 |
213 lemma enabled_disj1: "\<turnstile> Enabled F \<longrightarrow> Enabled (F | G)" |
213 lemma enabled_disj1: "\<turnstile> Enabled F \<longrightarrow> Enabled (F \<or> G)" |
214 by (auto elim!: enabled_mono) |
214 by (auto elim!: enabled_mono) |
215 |
215 |
216 lemma enabled_disj2: "\<turnstile> Enabled G \<longrightarrow> Enabled (F | G)" |
216 lemma enabled_disj2: "\<turnstile> Enabled G \<longrightarrow> Enabled (F \<or> G)" |
217 by (auto elim!: enabled_mono) |
217 by (auto elim!: enabled_mono) |
218 |
218 |
219 lemma enabled_conj1: "\<turnstile> Enabled (F & G) \<longrightarrow> Enabled F" |
219 lemma enabled_conj1: "\<turnstile> Enabled (F \<and> G) \<longrightarrow> Enabled F" |
220 by (auto elim!: enabled_mono) |
220 by (auto elim!: enabled_mono) |
221 |
221 |
222 lemma enabled_conj2: "\<turnstile> Enabled (F & G) \<longrightarrow> Enabled G" |
222 lemma enabled_conj2: "\<turnstile> Enabled (F \<and> G) \<longrightarrow> Enabled G" |
223 by (auto elim!: enabled_mono) |
223 by (auto elim!: enabled_mono) |
224 |
224 |
225 lemma enabled_conjE: |
225 lemma enabled_conjE: |
226 "\<lbrakk> s \<Turnstile> Enabled (F & G); \<lbrakk> s \<Turnstile> Enabled F; s \<Turnstile> Enabled G \<rbrakk> \<Longrightarrow> Q \<rbrakk> \<Longrightarrow> Q" |
226 "\<lbrakk> s \<Turnstile> Enabled (F \<and> G); \<lbrakk> s \<Turnstile> Enabled F; s \<Turnstile> Enabled G \<rbrakk> \<Longrightarrow> Q \<rbrakk> \<Longrightarrow> Q" |
227 apply (frule enabled_conj1 [action_use]) |
227 apply (frule enabled_conj1 [action_use]) |
228 apply (drule enabled_conj2 [action_use]) |
228 apply (drule enabled_conj2 [action_use]) |
229 apply simp |
229 apply simp |
230 done |
230 done |
231 |
231 |
232 lemma enabled_disjD: "\<turnstile> Enabled (F | G) \<longrightarrow> Enabled F | Enabled G" |
232 lemma enabled_disjD: "\<turnstile> Enabled (F \<or> G) \<longrightarrow> Enabled F \<or> Enabled G" |
233 by (auto simp add: enabled_def) |
233 by (auto simp add: enabled_def) |
234 |
234 |
235 lemma enabled_disj: "\<turnstile> Enabled (F | G) = (Enabled F | Enabled G)" |
235 lemma enabled_disj: "\<turnstile> Enabled (F \<or> G) = (Enabled F \<or> Enabled G)" |
236 apply clarsimp |
236 apply clarsimp |
237 apply (rule iffI) |
237 apply (rule iffI) |
238 apply (erule enabled_disjD [action_use]) |
238 apply (erule enabled_disjD [action_use]) |
239 apply (erule disjE enabled_disj1 [action_use] enabled_disj2 [action_use])+ |
239 apply (erule disjE enabled_disj1 [action_use] enabled_disj2 [action_use])+ |
240 done |
240 done |