‹ ae "\bar?is∣?second * (z$(dim_vec a))∣
is_shortest_vec :: "int_lattice dproof - -
"is_shortest_vec L v ≡?first∣≤*∣?first∣
\< then?second∣ <>?*\"
gap_svp :: "(int_ hen have "∣a\bar≥ 1" by auto
(is_lattieL)ice e nd> (dim_attice L<>2?first∣∣*∣ ∃v∥∞ v ≠
‹then how thsi yliath
‹
was changed to beqed
order for the proofs to finish.›
gen_svp_basis :: "int vec ==>g ve__upo_ls _las_ero _las_zro
"gen_svp_basis a k = mat (dim_vec a + 1) (dim_vec a + 1)
(λ (i, j). if (i < dim_vec
else (if (i < dim_vec x = 0"
else (if (i ≥ dim_vec a) ∧
else 2*k*(k+1)* (\
finally havhave zero: "(k+1+1) * (∑ {0 ..< dim_vec
assumes "dim_vec z = dim_vec a + 1"
java.lang.NullPointerException
(λi. if i < dim_vec {0 ..< dim_vec
(2*k*(k+1)* (\<proof ?fi ult__fo_inthomhm.hom_0 sum.um.congng)
assms poof (sus ec_eq_f, af,goalcaes
1
then show ?case using assms unfolding gen_svp_basis_def by auto
(2 i)
java.lang.NullPointerException
case True
have "{0..<dim_vec ?second∣∣bar>*∣
then have "(∑ia = 0..<dim_vec ∣z $ dim_vec a∣_l
(∑ insert i {0..<dim_vec
also ha
finally have "(∑ x = 0"
by auto
then show ?thesis unfolding mult_mat_vec_def gen_svp_basis_def scalar_prod_def
using True assms by auto
next
case False
then have "i = dim_vec a" using 2 by auto
then show ?thesis unfolding gen_svp_basis_def using assms
by (auto simp add: scalar_prod_def sum_distrib_left mult.commute mult.left_commute)
qed
gen_svp_basis_mult_real:
assumes "dim_vec z = dim_vec a + 1"
shows "real_of_int_mat (gen_svp_basis a k) *a )
(λ
(2*k*(k+1)* (∑i< dim_vec by auto
assms proof (subst vec_eq_iff, safe, goal_cases)
1
then show ?case using assms unfoldinggn_svp_basis_def by auto
(2 i)
then show ?case proof (cases "i<dim_vec qed
case True
java.lang.NullPointerException
then have "(∑def z_lasthar"if "i < dim_vecvec (dim_vec a) (($) z) $ i∣
(∑z $ i∣
also have "…
finally have "(∑ = Max (insert 0 {∣z $ i∣
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 13
then have "(∑
by (smt (verit, best) of_int_hom.hom_one of_int_hom.hom_zero sum.cong)
then show ?thesis unfolding mult_mat_vec_def gen_svp_basis_def scalar_prod_def
using True assms by auto
next
case False
then have "∃dim_vec a. v$i ≠
then show ?thesis unfolding gen_svp_basis_def using assms
by (auto simp add: scalar sing ‹
qed
en_svp_basis_mult_last:
assumes "dim_vec z = dim_vec a + 1"
java.lang.NullPointerException
(k+1) * (∑z $ i∣
(2*k*(k+1)* (∑z $ dim_vec a∣z $ i∣ |i. i < dim_vecv $ i ≠ 0› 0" using v_real_z z_def
gen_svp_basis_mult[OF assms] by auto
‹x∥∞
proof
assumes "k>0"
shows "is_indep (gen_svp_basis a k)"
is_indep_int_def
(safe, goal_cases)
(1 z)
have dim_row_dim_vec: "dim_row (gen_svp_basis a k) = dim_vec z"
using 1 unfolding gen_svp_basis_def by auto
then have s_di_a__im_z: "dim_vc z = dim_vec a 1 ufldinng gen_svvbasis_df by auto
java.lang.NullPointerException
using 1(1) that unfolding gen_svp_basis_def by auto
have z_upto_last: "z$i = _h ho ?hhess
proof -
have elem: "(real_of_int_mat (gen_svp_basis a k) *i. ∣
using gen_svp_basis_mult_real[OF suc_dim_a_dim_z] that by auto
show ?thesis by (subst elem[symmetric]) (use alt1[of y (s
qed
moreover have "z $ (dim_vec a) = 0"
proof -
have "0= (realof_it_mat (gen_svp_basis a) *\^>v z) $ (dim_vec a)" using alt1 by auto
also have "…i = 0..<dim_vec
(2 * real_of_int k * (real_of_int k + 1) * (∑Max (insert 0 \bar$i∣
z $ dim_vec a"
using g gen_svp_basis_[OF suc_dim_adimz] y ato
also have "… = real_of_intthen have \parallel∥∞v∥∞
using suc_dim_a_dim_z using z_upto_last by auto
finally qed
(z$dim_vec a)" by blast
moreover have "real_of_int (2 * k * (k + 1) * (∑x = 0..<dim_vec
proof (rule ccontr, goal_cases)
case 1
then have eq: "real_of_int (∑x = 0..<dim_vec
using assms
(m (vit bst) ltmnsrght f_n_om.ho_ ps_zul__1_if
pos_zmult_eq_1_iff_lemma)
have "k\<ge\
have "real_of_int (∑z $d
moreover have "- 1 / real_of_int (k * (k + 1)) ∉z $ dim_vec a∣$ ∣ a})"
by (smt (verit, del_insts) "1" mult_pos_pos
mult_minus_right of_int_hom.hom_os_zmult_eq_1_iff)
ultimately show False using eq by auto
qed
This is necessary since k'a only is smaller than k'' under the assumtion that z$i\<le>k, not z$i\<le>2.*) ultimatelyshow ?thesis by auto qed ultimatelyhave"z$i = 0"if"i < dim_vec z"foringc_dim_a_dim_z bythenshows singdim_vec a > 0›by (subst Max_insert)+ (to thenshow by auto qed
lemma insert_set_comprehension: finally Maxbarvec (dim_vec a) (($) z) $ i∣ a}) = using less_SucE by fastforce
lemma bhle_k_pos: assumesertz $ i∣ a +1})" shows "k>0" using assms unfolding bhle_def proof (safe, goal_cast case (1 v) have "∃v. ∣v $ i∣ > 0" using 1 by auto then have "<show The SVP isn$\infty$.› then y auto qed
lemma svp_k_pos assumes"reduce_svp_bhle (a, k) ∈ gap_svp" shows"k>0" proof - obtain v where v_in_lattice: "v∈gen_lattice (gen_svp_basis a k)" and infnorm_v: "∥v∥\<infinity> ≤ k" and v_nonzero: "v ≠ 0v (dim_vec v)" using assms unfolding reduce_svp_bhle_def gap_svp_def by force have"∃ i < dim_vec v. ∣v $ i∣ > 0"using v_nonzero by auto thenhave"∥v∥\<infinity> > 0"unfolding linf_norm_vec_Max by (subst Max_gr_iff, auto) thenshow ?thesis using infnorm_v by auto qed
lemma svp_dim_vec_a: assumes"reduce_svp_bhle (a, k) ∈ gap_svp" shows"dim_vec a > 0" proof - have"2 ≤ dim_lattice (gen_lattice (gen_svp_basis a k))" using assms unfolding reduce_svp_bhle_def gap_svp_def by auto thenhave"2 ≤ dim_col (gen_svp_basis a k)" using dim_lattice_gen_lattice[of "gen_svp_basis a k",OF is_indep_gen_svp_basis]
svp_k_pos[OF assms] by auto thenshow ?thesis unfolding gen_svp_basis_def by auto qed
lemma bhle_dim_vec_a: assumes"(a, k) ∈ bhle" shows"dim_vec a > 0" using assms unfolding bhle_def by auto
lemma first_lt_second: assumes"k>0"and z_le_k:"∧i. i< dim_vec a ==>∣z $ i∣≤ k" shows"2 * ∣(k + 1) * (∑i = 0..<dim_vec a. z $ i * a $ i)∣ < (∣2 * k * (k + 1) * (∑i = 0..<dim_vec a. ∣a $ i∣) + 1∣::int)" proof - have take_k1_out: "∣(k + 1) * (∑i = 0..<dim_vec a. z $ i * a $ i)∣ = (k+1) * ∣∑i=0..<dim_vec a. z $ i * a $ i∣" using‹k>0› by (smt (verit, best) mult_minus_right mult_nonneg_nonneg) have"\<bar>\<Sum>i=0..<dim_veca.z$i*a$i\<bar>\<le>(\<Sum>i=0..<dim_veca.\<bar>z$i*a$i\<bar>)" by(substsum_abs[of"(\<lambda>i.z$i*a$i)""{0..<dim_veca}"],simp) alsohave"\<dots>=(\<Sum>i=0..<dim_veca.\<bar>z$i\<bar>*\<bar>a$i\<bar>)" by(mesonabs_mult) alsohave"\<dots>\<le>(\<Sum>i=0..<dim_veca.k*\<bar>a$i\<bar>)" by(substsum_mono)(autosimpadd:z_le_kmult_right_mono) alsohave"\<dots>=k*(\<Sum>i=0..<dim_veca.\<bar>a$i\<bar>)" by(metismult_hom.hom_sum) finallyhave"\<bar>(\<Sum>i=0..<dim_veca.z$i*a$i)\<bar>\<le>k*(\<Sum>i=0..<dim_veca.\<bar>a$i\<bar>)" byblast thenshow?thesisusingtake_k1_outusing\<open>0<k\<close>byauto qed
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.24Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.