src/HOL/UNITY/Comp/Progress.thy
changeset 69597 ff784d5a5bfb
parent 63146 f1ecba0272f9
equal deleted inserted replaced
69596:c8a2755bf220 69597:ff784d5a5bfb
    16     "FF = mk_total_program (UNIV, {range (\<lambda>x. (x, x+1))}, UNIV)"
    16     "FF = mk_total_program (UNIV, {range (\<lambda>x. (x, x+1))}, UNIV)"
    17 
    17 
    18 definition GG :: "int program" where
    18 definition GG :: "int program" where
    19     "GG = mk_total_program (UNIV, {range (\<lambda>x. (x, 2*x))}, UNIV)"
    19     "GG = mk_total_program (UNIV, {range (\<lambda>x. (x, 2*x))}, UNIV)"
    20 
    20 
    21 subsubsection \<open>Calculating @{term "wens_set FF (atLeast k)"}\<close>
    21 subsubsection \<open>Calculating \<^term>\<open>wens_set FF (atLeast k)\<close>\<close>
    22 
    22 
    23 lemma Domain_actFF: "Domain (range (\<lambda>x::int. (x, x + 1))) = UNIV"
    23 lemma Domain_actFF: "Domain (range (\<lambda>x::int. (x, x + 1))) = UNIV"
    24 by force
    24 by force
    25 
    25 
    26 lemma FF_eq:
    26 lemma FF_eq:
    60 apply (erule notE)
    60 apply (erule notE)
    61 apply (rule_tac x="nat (k-xa)" in range_eqI)
    61 apply (rule_tac x="nat (k-xa)" in range_eqI)
    62 apply (simp add: wens_single_finite_FF)
    62 apply (simp add: wens_single_finite_FF)
    63 done
    63 done
    64 
    64 
    65 subsubsection \<open>Proving @{term "FF \<in> UNIV leadsTo atLeast (k::int)"}\<close>
    65 subsubsection \<open>Proving \<^term>\<open>FF \<in> UNIV leadsTo atLeast (k::int)\<close>\<close>
    66 
    66 
    67 lemma atLeast_ensures: "FF \<in> atLeast (k - 1) ensures atLeast (k::int)"
    67 lemma atLeast_ensures: "FF \<in> atLeast (k - 1) ensures atLeast (k::int)"
    68 apply (simp add: Progress.wens_FF [symmetric] wens_ensures)
    68 apply (simp add: Progress.wens_FF [symmetric] wens_ensures)
    69 apply (simp add: wens_ensures FF_eq)
    69 apply (simp add: wens_ensures FF_eq)
    70 done
    70 done