diff -r 22517d04d20b -r c4db685eaed0 src/HOL/IMP/Abs_Int3.thy --- a/src/HOL/IMP/Abs_Int3.thy Fri Apr 26 12:09:51 2013 +0200 +++ b/src/HOL/IMP/Abs_Int3.thy Fri Apr 26 13:12:14 2013 +0200 @@ -278,10 +278,8 @@ subsubsection "Tests" -definition "step_up_ivl n = - ((\C. C \ step_ivl \ C)^^n)" -definition "step_down_ivl n = - ((\C. C \ step_ivl \ C)^^n)" +definition "step_up_ivl n = ((\C. C \ step_ivl \ C)^^n)" +definition "step_down_ivl n = ((\C. C \ step_ivl \ C)^^n)" text{* For @{const test3_ivl}, @{const AI_ivl} needed as many iterations as the loop took to execute. In contrast, @{const AI_ivl'} converges in a @@ -354,7 +352,7 @@ thus "(\x\X. m (S2 x)) \ (\x\X. m (S1 x))" by (metis setsum_mono) qed -lemma m_s_anti_mono: "S1 \ S2 \ m_s X S1 \ m_s X S2" +lemma m_s_anti_mono: "S1 \ S2 \ m_s S1 X \ m_s S2 X" unfolding m_s_def apply (transfer fixing: m) apply(simp add: less_eq_st_rep_iff eq_st_def m_s_anti_mono_rep) @@ -374,14 +372,14 @@ qed lemma m_s_widen: "finite X \ fun S1 = fun S2 on -X ==> - ~ S2 \ S1 \ m_s X (S1 \ S2) < m_s X S1" + ~ S2 \ S1 \ m_s (S1 \ S2) X < m_s S1 X" apply(auto simp add: less_st_def m_s_def) apply (transfer fixing: m) apply(auto simp add: less_eq_st_rep_iff m_s_widen_rep) done lemma m_o_anti_mono: "finite X \ top_on_opt o1 (-X) \ top_on_opt o2 (-X) \ - o1 \ o2 \ m_o X o1 \ m_o X o2" + o1 \ o2 \ m_o o1 X \ m_o o2 X" proof(induction o1 o2 rule: less_eq_option.induct) case 1 thus ?case by (simp add: m_o_def)(metis m_s_anti_mono) next @@ -392,7 +390,7 @@ qed lemma m_o_widen: "\ finite X; top_on_opt S1 (-X); top_on_opt S2 (-X); \ S2 \ S1 \ \ - m_o X (S1 \ S2) < m_o X S1" + m_o (S1 \ S2) X < m_o S1 X" by(auto simp: m_o_def m_s_h less_Suc_eq_le m_s_widen split: option.split) lemma m_c_widen: @@ -409,8 +407,8 @@ done -definition n_s :: "vname set \ 'av st \ nat" ("n\<^isub>s") where -"n\<^isub>s X S = (\x\X. n(fun S x))" +definition n_s :: "'av st \ vname set \ nat" ("n\<^isub>s") where +"n\<^isub>s S X = (\x\X. n(fun S x))" lemma n_s_narrow_rep: assumes "finite X" "S1 = S2 on -X" "\x. S2 x \ S1 x" "\x. S1 x \ S2 x \ S1 x" @@ -427,25 +425,25 @@ qed lemma n_s_narrow: "finite X \ fun S1 = fun S2 on -X \ S2 \ S1 \ S1 \ S2 < S1 - \ n\<^isub>s X (S1 \ S2) < n\<^isub>s X S1" + \ n\<^isub>s (S1 \ S2) X < n\<^isub>s S1 X" apply(auto simp add: less_st_def n_s_def) apply (transfer fixing: n) apply(auto simp add: less_eq_st_rep_iff eq_st_def fun_eq_iff n_s_narrow_rep) done -definition n_o :: "vname set \ 'av st option \ nat" ("n\<^isub>o") where -"n\<^isub>o X opt = (case opt of None \ 0 | Some S \ n\<^isub>s X S + 1)" +definition n_o :: "'av st option \ vname set \ nat" ("n\<^isub>o") where +"n\<^isub>o opt X = (case opt of None \ 0 | Some S \ n\<^isub>s S X + 1)" lemma n_o_narrow: "top_on_opt S1 (-X) \ top_on_opt S2 (-X) \ finite X - \ S2 \ S1 \ S1 \ S2 < S1 \ n\<^isub>o X (S1 \ S2) < n\<^isub>o X S1" + \ S2 \ S1 \ S1 \ S2 < S1 \ n\<^isub>o (S1 \ S2) X < n\<^isub>o S1 X" apply(induction S1 S2 rule: narrow_option.induct) apply(auto simp: n_o_def n_s_narrow) done definition n_c :: "'av st option acom \ nat" ("n\<^isub>c") where -"n\<^isub>c C = (let as = annos C in \io (vars C) (as!i))" +"n\<^isub>c C = (let as = annos C in \io (as!i) (vars C))" lemma less_annos_iff: "(C1 < C2) = (C1 \ C2 \ (\i