equal
deleted
inserted
replaced
25 |
25 |
26 |
26 |
27 definition steps :: "state \<Rightarrow> com \<Rightarrow> nat \<Rightarrow> state set acom" where |
27 definition steps :: "state \<Rightarrow> com \<Rightarrow> nat \<Rightarrow> state set acom" where |
28 "steps s c n = ((step {})^^n) (step {s} (annotate (\<lambda>p. {}) c))" |
28 "steps s c n = ((step {})^^n) (step {s} (annotate (\<lambda>p. {}) c))" |
29 |
29 |
30 lemma steps_approx_fix_step: assumes "step S cs = cs" and "s:S" |
30 lemma steps_approx_fix_step: assumes "step S cs = cs" and "s \<in> S" |
31 shows "steps s (strip cs) n \<le> cs" |
31 shows "steps s (strip cs) n \<le> cs" |
32 proof- |
32 proof- |
33 let ?bot = "annotate (\<lambda>p. {}) (strip cs)" |
33 let ?bot = "annotate (\<lambda>p. {}) (strip cs)" |
34 have "?bot \<le> cs" by(induction cs) auto |
34 have "?bot \<le> cs" by(induction cs) auto |
35 from step_preserves_le[OF assms(1)_ this, of "{s}"] \<open>s:S\<close> |
35 from step_preserves_le[OF assms(1)_ this, of "{s}"] \<open>s \<in> S\<close> |
36 have 1: "step {s} ?bot \<le> cs" by simp |
36 have 1: "step {s} ?bot \<le> cs" by simp |
37 from steps_empty_preserves_le[OF assms(1) 1] |
37 from steps_empty_preserves_le[OF assms(1) 1] |
38 show ?thesis by(simp add: steps_def) |
38 show ?thesis by(simp add: steps_def) |
39 qed |
39 qed |
40 |
40 |