Commit cf03a365 by Max W. Haslbeck

### add lemma with bounds for all numbers in GSO

parent b50e1734e10d
 ... ... @@ -544,7 +544,7 @@ section \Bounds on $\sigma$ and $\mu'$\ context gram_schmidt_fs_int begin lemma A_mu': lemma A_\': assumes "i < m" "j \ i" shows "(\' i j)\<^sup>2 \ A ^ (3 * Suc j)" proof - ... ... @@ -579,7 +579,7 @@ qed lemma A_\: assumes "i < m" "j \ i" "l \ j" shows "\\ l i j\ \ of_nat l * A ^ (2 * l + 2)" shows "\\ l i j\ \ of_nat l * A ^ (2 * l + 2)" proof - have 1: "\d l\ = d l" using Gramian_determinant(2) assms by (intro abs_of_pos) auto ... ... @@ -624,6 +624,101 @@ proof - by simp qed lemma leq_squared: "(z::int) \ z\<^sup>2" proof (cases "0 < z") case True then show ?thesis by (auto intro!: self_le_power) next case False then have "z \ 0" by (simp) also have "0 \ z\<^sup>2" by (auto) finally show ?thesis by simp qed lemma abs_leq_squared: "\z::int\ \ z\<^sup>2" using leq_squared[of "\z\"] by auto lemma combined_size_bound_integer: assumes x: "x \ {fs ! i $j | i j. i < m \ j < n} \ {\' i j | i j. j \ i \ i < m} \ {\ l i l | i j l. i < m \ j \ i \ l \ j}" (is "x \ ?fs \ ?\' \ ?\") and m: "m \ 0" shows "\x\ \ of_nat m * A ^ (3 * Suc m)" proof - let ?m = "(of_nat m)::'a::trivial_conjugatable_linordered_field" have [simp]: "1 \ ?m" using m by (metis Num.of_nat_simps One_nat_def Suc_leI neq0_conv of_nat_mono) have [simp]: "\(of_int z)::'a::trivial_conjugatable_linordered_field\ \ (of_int z)\<^sup>2" for z using abs_leq_squared by (metis of_int_abs of_int_le_iff of_int_power) have "\fs ! i$v j\ \ of_nat m * A ^ (3 * Suc m)" if "i < m" "j < n" for i j proof - have "\fs ! i $v j\ \ \fs ! i$v j\\<^sup>2" by (rule Ints_cases[of "fs ! i $v j"]) (use fs_int that in auto) also have "\fs ! i$v j\\<^sup>2 \ \fs ! i\\<^sup>2" using that by (intro vec_le_sq_norm) (auto) also have "... \ 1 * A" using A_fs that by auto also have "\ \ of_nat m * A ^ (3 * Suc m)" using m A_1 by (intro mult_mono) (auto intro!: mult_mono self_le_power) finally show ?thesis by (auto) qed then have "\x\ \ of_nat m * A ^ (3 * Suc m)" if "x \ ?fs" using that by auto moreover have "\x\ \ of_nat m * A ^ (3 * Suc m)" if "x \ ?\'" proof - have "\\' i j\ \ of_nat m * A ^ (3 + 3 * m)" if "j \ i" "i < m" for i j proof - have "\' i j \ \" unfolding \'_def using that Gramian_determinant_mu_ints by auto then have "\\' i j\ \ (\' i j)\<^sup>2" by (rule Ints_cases[of "\' i j"]) auto also have "\ \ A ^ (3 * Suc j)" using that A_\' by auto also have "\ \ 1 * A ^ (3 * Suc m)" using that assms A_1 by (auto intro!: power_increasing) also have "\ \ of_nat m * A ^ (3 * Suc m)" using A_ge_0 assms zero_le_power by (intro mult_mono) auto finally show ?thesis by auto qed then show ?thesis using that by auto qed moreover have "\x\ \ of_nat m * A ^ (3 * Suc m)" if "x \ ?\" proof - have "\\ l i l\ \ of_nat m * A ^ (3 + 3 * m)" if "i < m" "j \ i" "l \ j" for i j l proof - have "\\ l i l\ \ of_nat l * A ^ (2 * l + 2)" using that A_\ by auto also have "\ \ of_nat m * A ^ (2 * l + 2)" using that A_ge_0 assms zero_le_power by (intro mult_mono) auto also have "\ \ of_nat m * A ^ (3 * Suc m)" proof - have "A ^ (2 * l + 2) \ A ^ (3 * Suc m)" using that assms A_1 by (intro power_increasing) (auto intro!: power_increasing) then show ?thesis using that assms A_1 by (intro mult_mono) (auto) qed finally show ?thesis by simp qed then show ?thesis using that by (auto) qed ultimately show ?thesis using assms by auto qed (* "x \ 0 \ log 2 \x\ \ 2 * m * log 2 A + m + log 2 m" (is "_ \ ?l1 \ ?b1") "x \ 0 \ log 2 \x\ \ 4 * m * log 2 (M * n) + m + log 2 m" (is "_ \ _ \ ?b2") *) end (* gram_schmidt_fs_int *) section \Calculate $g_i' = d_i g_i$\ ... ... @@ -986,7 +1081,7 @@ qed end value (code) "let v = map vec_of_list [[1,2,3],[4,5,6],[7,8,10]] in (gso_array.gso'_array (d\_impl v) v, d\_impl v)" value (code) "gram_schmidt 3 (map vec_of_list [[1::int,2,3],[4,5,6],[7,8,10]])" value (code) "let v = map vec_of_list [[1,2,3],[4,5,6],[7,8,10]] in (gso_array.gso_array v)" value (code) "gram_schmidt 3 (map vec_of_list [[1::rat,2,3],[4,5,6],[7,8,10]])" end
 ... ... @@ -423,37 +423,23 @@ lemma power_gt1: "1 < a \ 1 < a ^ Suc n" lemma one_less_power [simp]: "1 < a \ 0 < n \ 1 < a ^ n" by (cases n) (simp_all add: power_gt1_lemma) text \Proof resembles that of \power_strict_decreasing\.\ lemma power_decreasing: "n \ N \ 0 \ a \ a \ 1 \ a ^ N \ a ^ n" proof (induct N) case 0 then show ?case by simp next proof (induction N) case (Suc N) then have "a * a^N \ 1 * a^n" if "n \ N" using that by (intro mult_mono) auto then show ?case apply (auto simp add: le_Suc_eq) apply (subgoal_tac "a * a^N \ 1 * a^n") apply simp apply (rule mult_mono) apply auto done qed using Suc by (auto simp add: le_Suc_eq) qed (auto) text \Proof again resembles that of \power_strict_decreasing\.\ lemma power_increasing: "n \ N \ 1 \ a \ a ^ n \ a ^ N" proof (induct N) case 0 then show ?case by simp next proof (induction N) case (Suc N) then have "1 * a^n \ a * a^N" if "n \ N" using that by (intro mult_mono) (auto simp add: order_trans[OF zero_le_one]) then show ?case apply (auto simp add: le_Suc_eq) apply (subgoal_tac "1 * a^n \ a * a^N") apply simp apply (rule mult_mono) apply (auto simp add: order_trans [OF zero_le_one]) done qed using Suc by (auto simp add: le_Suc_eq) qed (auto) lemma power_Suc_le_self: "0 \ a \ a \ 1 \ a ^ Suc n \ a" using power_decreasing [of 1 "Suc n" a] by simp ... ...
 ... ... @@ -609,6 +609,10 @@ class trivial_conjugatable_ordered_field = class trivial_conjugatable_linordered_field = trivial_conjugatable_ordered_field + linordered_field begin subclass conjugatable_ring_1_abs_real_line by (standard) (auto simp add: semiring_normalization_rules) end instance rat :: trivial_conjugatable_linordered_field by (standard, auto) ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!