File: Mathlib/NumberTheory/NumberField/House.lean

full_name: NumberField.house
code: /-- The house of an algebraic number as the norm of its image by the canonical embedding. -/
def house (α : K) : ℝ 
goal: ℝ

full_name: NumberField.house_eq_sup'
code: /-- The house is the largest of the modulus of the conjugates of an algebraic number. -/
theorem house_eq_sup' (α : K) :
    house α = univ.sup' univ_nonempty (fun φ : K →+* ℂ ↦ ‖φ α‖₊) 
goal: NumberField.house α = ↑(Finset.univ.sup' ⋯ fun φ => ‖φ α‖₊)

full_name: NumberField.house_sum_le_sum_house
code: theorem house_sum_le_sum_house {ι : Type*} (s : Finset ι) (α : ι → K) :
    house (∑ i ∈ s, α i) ≤ ∑ i ∈ s, house (α i) 
goal: NumberField.house (∑ i ∈ s, α i) ≤ ∑ i ∈ s, NumberField.house (α i)

full_name: NumberField.house_nonneg
code: theorem house_nonneg (α : K) : 0 ≤ house α 
goal: 0 ≤ NumberField.house α

full_name: NumberField.house_mul_le
code: theorem house_mul_le (α β : K) : house (α * β) ≤ house α * house β 
goal: NumberField.house (α * β) ≤ NumberField.house α * NumberField.house β

full_name: NumberField.house_intCast
code: @[simp] theorem house_intCast (x : ℤ) : house (x : K) = |x| 
goal: NumberField.house ↑x = ↑|x|

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.c
code: /-- `c` is defined as the product of the maximum absolute
  value of the entries of the inverse of the matrix `basisMatrix` and  `finrank ℚ K`. -/
private def c 
goal: ℝ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.c_nonneg
code: private theorem c_nonneg : 0 ≤ c K 
goal: 0 ≤ NumberField.house.c K

full_name: NumberField.house.basis_repr_abs_le_const_mul_house
code: theorem basis_repr_abs_le_const_mul_house (α : 𝓞 K) (i : K →+* ℂ) :
    Complex.abs (((integralBasis K).reindex (equivReindex K).symm).repr α i) ≤
      (c K) * house (algebraMap (𝓞 K) K α) 
goal: Complex.abs ↑((((NumberField.integralBasis K).reindex (NumberField.equivReindex K).symm).repr ↑α) i) ≤
  NumberField.house.c K * NumberField.house ((algebraMap (NumberField.RingOfIntegers K) K) α)

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.newBasis
code: /-- `newBasis K` defines a reindexed basis of the ring of integers of `K`,
  adjusted by the inverse of the equivalence `equivReindex`. -/
private def newBasis 
goal: Basis (K →+* ℂ) ℤ (NumberField.RingOfIntegers K)

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.supOfBasis
code: /-- `supOfBasis K` calculates the supremum of the absolute values of
  the elements in `newBasis K`. -/
private def supOfBasis : ℝ 
goal: ℝ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.supOfBasis_nonneg
code: private theorem supOfBasis_nonneg : 0 ≤ supOfBasis K 
goal: 0 ≤ NumberField.house.supOfBasis K

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.a'
code: /-- `a' K a` returns the integer coefficients of the basis vector in the
  expansion of the product of an algebraic integer and a basis vectors. -/
private def a' : α → β → (K →+* ℂ) → (K →+* ℂ) → ℤ 
goal: α → β → (K →+* ℂ) → (K →+* ℂ) → ℤ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.asiegel
code: /--`asiegel K a` the integer matrix of the coefficients of the
  product of matrix elements and basis vectors -/
private def asiegel : Matrix (α × (K →+* ℂ)) (β × (K →+* ℂ)) ℤ 
goal: Matrix (α × (K →+* ℂ)) (β × (K →+* ℂ)) ℤ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.asiegel_ne_0
code: private theorem asiegel_ne_0 : asiegel K a ≠ 0 
goal: NumberField.house.asiegel K a ≠ 0

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.ξ
code: /-- `ξ` is the the product of `x (l, r)` and the `r`-th basis element of the newBasis of `K`. -/
private def ξ : β → 𝓞 K 
goal: β → NumberField.RingOfIntegers K

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.ξ_ne_0
code: private theorem ξ_ne_0 : ξ K x ≠ 0 
goal: NumberField.house.ξ K x ≠ 0

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.lin_1
code: private theorem lin_1 (l k r) : a k l * (newBasis K) r =
    ∑ u, (a' K a k l r u) * (newBasis K) u 
goal: a k l * (NumberField.house.newBasis K) r =
  ∑ u : K →+* ℂ, ↑(NumberField.house.a' K a k l r u) * (NumberField.house.newBasis K) u

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.ξ_mulVec_eq_0
code: private theorem ξ_mulVec_eq_0 : a *ᵥ ξ K x = 0 
goal: a.mulVec (NumberField.house.ξ K x) = 0

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.c₂
code: /-- `c₂` is the product of the maximum of `1` and `c`, and `supOfBasis`. -/
private abbrev c₂ 
goal: ℝ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.c₂_nonneg
code: private theorem c₂_nonneg : 0 ≤ c₂ K 
goal: 0 ≤ NumberField.house.c₂ K

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.asiegel_remark
code: private theorem asiegel_remark : ‖asiegel K a‖ ≤ c₂ K * A 
goal: ‖NumberField.house.asiegel K a‖ ≤ NumberField.house.c₂ K * A

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.c₁
code: /-- `c₁ K` is the product of `finrank ℚ K` and  `c₂ K` and depends on `K`. -/
private def c₁ 
goal: ℝ

full_name: _private.Mathlib.NumberTheory.NumberField.House.0.NumberField.house.house_le_bound
code: private theorem house_le_bound : ∀ l, house (ξ K x l).1 ≤ (c₁ K) *
    ((c₁ K * q * A)^((p : ℝ) / (q - p))) 
goal: NumberField.house ↑(NumberField.house.ξ K x l) ≤
  NumberField.house.c₁ K * (NumberField.house.c₁ K * ↑q * A) ^ (↑p / (↑q - ↑p))

full_name: NumberField.house.exists_ne_zero_int_vec_house_le
code: /-- There exists a "small" non-zero algebraic integral solution of an
 non-trivial underdetermined system of linear equations with algebraic integer coefficients.-/
theorem exists_ne_zero_int_vec_house_le :
    ∃ (ξ : β → 𝓞 K), ξ ≠ 0 ∧ a *ᵥ ξ = 0 ∧
    ∀ l, house (ξ l).1 ≤ c₁ K * ((c₁ K * q * A) ^ ((p : ℝ) / (q - p))) 
goal: ∃ ξ,
  ξ ≠ 0 ∧
    a.mulVec ξ = 0 ∧
      ∀ (l : β),
        NumberField.house ↑(ξ l) ≤ NumberField.house.c₁ K * (NumberField.house.c₁ K * ↑q * A) ^ (↑p / (↑q - ↑p))