File: Mathlib/NumberTheory/SiegelsLemma.lean

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termM_1
code: local notation3 "m" => Fintype.card α
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termN_1
code: local notation3 "n" => Fintype.card β
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termE_1
code: local notation3 "e" => m / ((n : ℝ) - m)
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termB_1
code: local notation3 "B" => Nat.floor (((n : ℝ) * max 1 ‖A‖) ^ e)
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termB'_1
code: local notation3 "B'" => fun _ : β => (B : ℤ)
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termT_1
code: local notation3 "T" =>  Finset.Icc 0 B'
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termP_1
code: local notation3 "P" => fun i : α => ∑ j : β, B * posPart (A i j)
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termN_2
code: local notation3 "N" => fun i : α => ∑ j : β, B * (- negPart (A i j))
goal: Lean.Macro

full_name: Int.Matrix._aux_Mathlib_NumberTheory_SiegelsLemma___macroRules_Int_Matrix_termS_1
code: local notation3 "S" => Finset.Icc N P
goal: Lean.Macro

full_name: _private.Mathlib.NumberTheory.SiegelsLemma.0.Int.Matrix.image_T_subset_S
code: private lemma image_T_subset_S (v) (hv : v ∈ T) : A *ᵥ v ∈ S 
goal: A *ᵥ v ∈
  Finset.Icc
    (fun i =>
      ∑ j : β,
        ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ * -(A i j)⁻)
    fun i =>
    ∑ j : β,
      ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ * (A i j)⁺

full_name: _private.Mathlib.NumberTheory.SiegelsLemma.0.Int.Matrix.card_T_eq
code: private lemma card_T_eq : (T).card = (B + 1) ^ n 
goal: (Finset.Icc 0 fun x =>
      ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊).card =
  (⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ + 1) ^
    Fintype.card β

full_name: _private.Mathlib.NumberTheory.SiegelsLemma.0.Int.Matrix.N_le_P_add_one
code: private lemma N_le_P_add_one (i : α) : N i ≤ P i + 1 
goal: (fun i =>
      ∑ j : β,
        ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ * -(A i j)⁻)
    i ≤
  (fun i =>
        ∑ j : β,
          ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
            (A i j)⁺)
      i +
    1

full_name: _private.Mathlib.NumberTheory.SiegelsLemma.0.Int.Matrix.card_S_eq
code: private lemma card_S_eq : (Finset.Icc N P).card = ∏ i : α, (P i - N i + 1) 
goal: ↑(Finset.Icc
        (fun i =>
          ∑ j : β,
            ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
              -(A i j)⁻)
        fun i =>
        ∑ j : β,
          ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
            (A i j)⁺).card =
  ∏ i : α,
    ((fun i =>
            ∑ j : β,
              ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
                (A i j)⁺)
          i -
        (fun i =>
            ∑ j : β,
              ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
                -(A i j)⁻)
          i +
      1)

full_name: Int.Matrix.one_le_norm_A_of_ne_zero
code: /-- The sup norm of a non-zero integer matrix is at least one  -/
lemma one_le_norm_A_of_ne_zero (hA : A ≠ 0) : 1 ≤ ‖A‖ 
goal: 1 ≤ ‖A‖

full_name: _private.Mathlib.NumberTheory.SiegelsLemma.0.Int.Matrix.card_S_lt_card_T
code: private lemma card_S_lt_card_T : (S).card < (T).card 
goal: (Finset.Icc
      (fun i =>
        ∑ j : β,
          ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
            -(A i j)⁻)
      fun i =>
      ∑ j : β,
        ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊ *
          (A i j)⁺).card <
  (Finset.Icc 0 fun x =>
      ↑⌊(↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))⌋₊).card

full_name: Int.Matrix.exists_ne_zero_int_vec_norm_le
code: theorem exists_ne_zero_int_vec_norm_le : ∃ t : β → ℤ, t ≠ 0 ∧
    A *ᵥ t = 0 ∧ ‖t‖ ≤ (n * max 1 ‖A‖) ^ ((m : ℝ) / (n - m)) 
goal: ∃ t,
  t ≠ 0 ∧
    A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑(Fintype.card β) * max 1 ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))

full_name: Int.Matrix.exists_ne_zero_int_vec_norm_le'
code: theorem exists_ne_zero_int_vec_norm_le' (hA : A ≠ 0) : ∃ t : β → ℤ, t ≠ 0 ∧
    A *ᵥ t = 0 ∧ ‖t‖ ≤ (n * ‖A‖) ^ ((m : ℝ) / (n - m)) 
goal: ∃ t,
  t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑(Fintype.card β) * ‖A‖) ^ (↑(Fintype.card α) / (↑(Fintype.card β) - ↑(Fintype.card α)))