File: Mathlib/NumberTheory/NumberField/Discriminant.lean

full_name: NumberField.discr
code: /-- The absolute discriminant of a number field. -/
noncomputable abbrev discr : ℤ 
goal: ℤ

full_name: NumberField.coe_discr
code: theorem coe_discr : (discr K : ℚ) = Algebra.discr ℚ (integralBasis K) 
goal: ↑(NumberField.discr K) = Algebra.discr ℚ ⇑(NumberField.integralBasis K)

full_name: NumberField.discr_ne_zero
code: theorem discr_ne_zero : discr K ≠ 0 
goal: NumberField.discr K ≠ 0

full_name: NumberField.discr_eq_discr
code: theorem discr_eq_discr {ι : Type*} [Fintype ι] [DecidableEq ι] (b : Basis ι ℤ (𝓞 K)) :
    Algebra.discr ℤ b = discr K 
goal: Algebra.discr ℤ ⇑b = NumberField.discr K

full_name: NumberField.discr_eq_discr_of_algEquiv
code: theorem discr_eq_discr_of_algEquiv {L : Type*} [Field L] [NumberField L] (f : K ≃ₐ[ℚ] L) :
    discr K = discr L 
goal: NumberField.discr K = NumberField.discr L

full_name: NumberField.mixedEmbedding.volume_fundamentalDomain_latticeBasis
code: theorem _root_.NumberField.mixedEmbedding.volume_fundamentalDomain_latticeBasis :
    volume (fundamentalDomain (latticeBasis K)) =
      (2 : ℝ≥0∞)⁻¹ ^ NrComplexPlaces K * sqrt ‖discr K‖₊ 
goal: MeasureTheory.volume (Zspan.fundamentalDomain (NumberField.mixedEmbedding.latticeBasis K)) =
  2⁻¹ ^ NumberField.InfinitePlace.NrComplexPlaces K * ↑(NNReal.sqrt ‖NumberField.discr K‖₊)

full_name: NumberField.exists_ne_zero_mem_ideal_of_norm_le_mul_sqrt_discr
code: theorem exists_ne_zero_mem_ideal_of_norm_le_mul_sqrt_discr (I : (FractionalIdeal (𝓞 K)⁰ K)ˣ) :
    ∃ a ∈ (I : FractionalIdeal (𝓞 K)⁰ K), a ≠ 0 ∧
      |Algebra.norm ℚ (a : K)| ≤ FractionalIdeal.absNorm I.1 * (4 / π) ^ NrComplexPlaces K *
        (finrank ℚ K).factorial / (finrank ℚ K) ^ (finrank ℚ K) * Real.sqrt |discr K| 
goal: ∃ a ∈ ↑I,
  a ≠ 0 ∧
    ↑|(Algebra.norm ℚ) a| ≤
      ↑(FractionalIdeal.absNorm ↑I) * (4 / Real.pi) ^ NumberField.InfinitePlace.NrComplexPlaces K *
            ↑(FiniteDimensional.finrank ℚ K).factorial /
          ↑(FiniteDimensional.finrank ℚ K) ^ FiniteDimensional.finrank ℚ K *
        √|↑(NumberField.discr K)|

full_name: NumberField.exists_ne_zero_mem_ringOfIntegers_of_norm_le_mul_sqrt_discr
code: theorem exists_ne_zero_mem_ringOfIntegers_of_norm_le_mul_sqrt_discr :
    ∃ (a : 𝓞 K), a ≠ 0 ∧
      |Algebra.norm ℚ (a : K)| ≤ (4 / π) ^ NrComplexPlaces K *
        (finrank ℚ K).factorial / (finrank ℚ K) ^ (finrank ℚ K) * Real.sqrt |discr K| 
goal: ∃ a,
  a ≠ 0 ∧
    ↑|(Algebra.norm ℚ) ↑a| ≤
      (4 / Real.pi) ^ NumberField.InfinitePlace.NrComplexPlaces K * ↑(FiniteDimensional.finrank ℚ K).factorial /
          ↑(FiniteDimensional.finrank ℚ K) ^ FiniteDimensional.finrank ℚ K *
        √|↑(NumberField.discr K)|

full_name: NumberField.abs_discr_ge
code: theorem abs_discr_ge (h : 1 < finrank ℚ K) :
    (4 / 9 : ℝ) * (3 * π / 4) ^ finrank ℚ K ≤ |discr K| 
goal: 4 / 9 * (3 * Real.pi / 4) ^ FiniteDimensional.finrank ℚ K ≤ ↑|NumberField.discr K|

full_name: NumberField.abs_discr_gt_two
code: /-- **Hermite-Minkowski Theorem**. A nontrivial number field has discriminant greater than `2`. -/
theorem abs_discr_gt_two (h : 1 < finrank ℚ K) : 2 < |discr K| 
goal: 2 < |NumberField.discr K|

full_name: NumberField.hermiteTheorem.finite_of_finite_generating_set
code: theorem finite_of_finite_generating_set {p : IntermediateField ℚ A → Prop}
    (S : Set {F : IntermediateField ℚ A // p F}) {T : Set A}
    (hT : T.Finite) (h : ∀ F ∈ S, ∃ x ∈ T, F = ℚ⟮x⟯) :
    S.Finite 
goal: S.Finite

full_name: NumberField.hermiteTheorem.rankOfDiscrBdd
code: /-- An upper bound on the degree of a number field `K` with `|discr K| ≤ N`,
see `rank_le_rankOfDiscrBdd`. -/
noncomputable abbrev rankOfDiscrBdd : ℕ 
goal: ℕ

full_name: NumberField.hermiteTheorem.boundOfDiscBdd
code: /-- An upper bound on the Minkowski bound of a number field `K` with `|discr K| ≤ N`;
see `minkowskiBound_lt_boundOfDiscBdd`. -/
noncomputable abbrev boundOfDiscBdd : ℝ≥0 
goal: NNReal

full_name: NumberField.hermiteTheorem.rank_le_rankOfDiscrBdd
code: /-- If `|discr K| ≤ N` then the degree of `K` is at most `rankOfDiscrBdd`. -/
theorem rank_le_rankOfDiscrBdd :
    finrank ℚ K ≤ rankOfDiscrBdd N 
goal: FiniteDimensional.finrank ℚ K ≤ NumberField.hermiteTheorem.rankOfDiscrBdd N

full_name: NumberField.hermiteTheorem.minkowskiBound_lt_boundOfDiscBdd
code: /-- If `|discr K| ≤ N` then the Minkowski bound of `K` is less than `boundOfDiscrBdd`. -/
theorem minkowskiBound_lt_boundOfDiscBdd : minkowskiBound K ↑1 < boundOfDiscBdd N 
goal: NumberField.mixedEmbedding.minkowskiBound K 1 < ↑(NumberField.hermiteTheorem.boundOfDiscBdd N)

full_name: NumberField.hermiteTheorem.natDegree_le_rankOfDiscrBdd
code: theorem natDegree_le_rankOfDiscrBdd (a : 𝓞 K) (h : ℚ⟮(a : K)⟯ = ⊤) :
    natDegree (minpoly ℤ (a : K)) ≤ rankOfDiscrBdd N 
goal: (minpoly ℤ ↑a).natDegree ≤ NumberField.hermiteTheorem.rankOfDiscrBdd N

full_name: NumberField.hermiteTheorem.finite_of_discr_bdd_of_isReal
code: theorem finite_of_discr_bdd_of_isReal :
    {K : { F : IntermediateField ℚ A // FiniteDimensional ℚ F} |
      haveI :  NumberField K := @NumberField.mk _ _ inferInstance K.prop
      {w : InfinitePlace K | IsReal w}.Nonempty ∧ |discr K| ≤ N }.Finite 
goal: {K | {w | w.IsReal}.Nonempty ∧ |NumberField.discr ↥↑K| ≤ ↑N}.Finite

full_name: NumberField.hermiteTheorem.finite_of_discr_bdd_of_isComplex
code: theorem finite_of_discr_bdd_of_isComplex :
    {K : { F : IntermediateField ℚ A // FiniteDimensional ℚ F} |
      haveI :  NumberField K := @NumberField.mk _ _ inferInstance K.prop
      {w : InfinitePlace K | IsComplex w}.Nonempty ∧ |discr K| ≤ N }.Finite 
goal: {K | {w | w.IsComplex}.Nonempty ∧ |NumberField.discr ↥↑K| ≤ ↑N}.Finite

full_name: NumberField.finite_of_discr_bdd
code: /-- **Hermite Theorem**. Let `N` be an integer. There are only finitely many number fields
(in some fixed extension of `ℚ`) of discriminant bounded by `N`. -/
theorem _root_.NumberField.finite_of_discr_bdd :
    {K : { F : IntermediateField ℚ A // FiniteDimensional ℚ F} |
      haveI :  NumberField K := @NumberField.mk _ _ inferInstance K.prop
      |discr K| ≤ N }.Finite 
goal: {K | |NumberField.discr ↥↑K| ≤ ↑N}.Finite

full_name: Rat.numberField_discr
code: /-- The absolute discriminant of the number field `ℚ` is 1. -/
@[simp]
theorem numberField_discr : discr ℚ = 1 
goal: NumberField.discr ℚ = 1

full_name: Algebra.discr_eq_discr_of_toMatrix_coeff_isIntegral
code: /-- If `b` and `b'` are `ℚ`-bases of a number field `K` such that
`∀ i j, IsIntegral ℤ (b.toMatrix b' i j)` and `∀ i j, IsIntegral ℤ (b'.toMatrix b i j)` then
`discr ℚ b = discr ℚ b'`. -/
theorem Algebra.discr_eq_discr_of_toMatrix_coeff_isIntegral [NumberField K]
    {b : Basis ι ℚ K} {b' : Basis ι' ℚ K} (h : ∀ i j, IsIntegral ℤ (b.toMatrix b' i j))
    (h' : ∀ i j, IsIntegral ℤ (b'.toMatrix b i j)) : discr ℚ b = discr ℚ b' 
goal: Algebra.discr ℚ ⇑b = Algebra.discr ℚ ⇑b'