equal
deleted
inserted
replaced
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 |