src/HOL/IMP/Collecting1.thy
changeset 67613 ce654b0e6d69
parent 67406 23307fd33906
child 68778 4566bac4517d
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
    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