Documentation

Atlas.ArithmeticGeometry.code.Heights

noncomputable def AbsoluteHeight.absoluteHeight {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} [Finite ι] (P : Projectivization K (ι → K)) :
Instances For
    theorem AbsoluteHeight.absoluteHeight_mk {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} [Finite ι] {x : ι → K} (hx : x ≠ 0) :
    noncomputable def AbsoluteHeight.logHeight {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} [Finite ι] (P : Projectivization K (ι → K)) :
    Instances For
      theorem AbsoluteHeight.logHeight_eq {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} [Finite ι] (P : Projectivization K (ι → K)) :
      theorem weil_height_ge_one {K : Type u_1} [Field K] [NumberField K] {n : ℕ} (x : Fin (n + 1) → K) :
      theorem height_morphism_upper_bound {K : Type u_1} [Field K] [NumberField K] {n m d : ℕ} {φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : ∀ (i : Fin (m + 1)), (φ i).IsHomogeneous d) :
      ∃ (c : ℝ), ∀ (x : Fin (n + 1) → K), (Height.logHeight fun (j : Fin (m + 1)) => (MvPolynomial.eval x) (φ j)) ≤ ↑d * Height.logHeight x + c
      theorem height_automorphism_bound {K : Type u_1} [Field K] [NumberField K] {n : ℕ} {φ ψ : Fin (n + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : ∀ (i : Fin (n + 1)), (φ i).IsHomogeneous 1) (hψ : ∀ (i : Fin (n + 1)), (ψ i).IsHomogeneous 1) (hinv : ∀ (x : Fin (n + 1) → K) (i : Fin (n + 1)), (MvPolynomial.eval fun (j : Fin (n + 1)) => (MvPolynomial.eval x) (φ j)) (ψ i) = x i) :
      ∃ (c : ℝ), ∀ (x : Fin (n + 1) → K), |(Height.logHeight fun (j : Fin (n + 1)) => (MvPolynomial.eval x) (φ j)) - Height.logHeight x| ≤ c
      Instances For
        theorem galoisEquivFinitePlace_apply {K : Type u_1} [Field K] [NumberField K] (σ : Gal(K/ℚ)) (v : NumberField.FinitePlace K) (y : K) :
        ((galoisEquivFinitePlace σ) v) y = v (σ.symm y)
        theorem prod_infinitePlace_galois_eq {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} (σ : Gal(K/ℚ)) (x : ι → K) :
        ∏ v : NumberField.InfinitePlace K, (⨆ (i : ι), v (σ (x i))) ^ v.mult = ∏ v : NumberField.InfinitePlace K, (⨆ (i : ι), v (x i)) ^ v.mult
        theorem finprod_finitePlace_galois_eq {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} (σ : Gal(K/ℚ)) (x : ι → K) :
        ∏ᶠ (v : NumberField.FinitePlace K), ⨆ (i : ι), v (σ (x i)) = ∏ᶠ (v : NumberField.FinitePlace K), ⨆ (i : ι), v (x i)
        theorem mulHeight_galois_invariant {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} (σ : Gal(K/ℚ)) (x : ι → K) :
        theorem logHeight_galois_invariant {K : Type u_1} [Field K] [NumberField K] {ι : Type u_2} (σ : Gal(K/ℚ)) (x : ι → K) :
        Instances For
          noncomputable def EllipticCurve.WeakMordellWeil.descentMapRaw (a b : ℚ) (hdisc : a ^ 2 - 4 * b ≠ 0) :
          Instances For
            theorem EllipticCurve.WeakMordellWeil.descentMapRaw_add_nonInverse (a b : ℚ) (hE' : (E'Curve a b).IsElliptic) (hdisc : a ^ 2 - 4 * b ≠ 0) (x₁ x₂ y₁ y₂ : ℚ) (h₁ : (E'Curve a b).toAffine.Nonsingular x₁ y₁) (h₂ : (E'Curve a b).toAffine.Nonsingular x₂ y₂) (hxy : ¬(x₁ = x₂ ∧ y₁ = (E'Curve a b).toAffine.negY x₂ y₂)) :
            theorem EllipticCurve.WeakMordellWeil.descentMapRaw_add (a b : ℚ) (hE' : (E'Curve a b).IsElliptic) (hdisc : a ^ 2 - 4 * b ≠ 0) (P Q : (E'Curve a b).toAffine.Point) :
            descentMapRaw a b hdisc (P + Q) = descentMapRaw a b hdisc P + descentMapRaw a b hdisc Q
            Instances For
              theorem EllipticCurve.WeakMordellWeil.int_sq_mul_squarefree (n : ℤ) (hn : n ≠ 0) :
              ∃ (r : ℤ) (s : ℤ), n = r * s ^ 2 ∧ Squarefree r ∧ r ≠ 0 ∧ s ≠ 0
              theorem EllipticCurve.WeakMordellWeil.sq_class_of_sq_factor (n r s : ℤ) (hn : n ≠ 0) (hr : r ≠ 0) (hs : s ≠ 0) (heq : n = r * s ^ 2) :
              theorem EllipticCurve.WeakMordellWeil.squarefree_part_dvd_target (A B : ℚ) (hB : B ≠ 0) (u : ℚˣ) (Y : ℚ) (hY : Y ^ 2 = ↑u * (↑u ^ 2 + A * ↑u + B)) (hN : ↑A.den * B.num * ↑B.den ≠ 0) (r s : ℤ) (hr_sf : Squarefree r) (hr_ne : r ≠ 0) (hs_ne : s ≠ 0) (heq : (↑u).num * ↑(↑u).den = r * s ^ 2) :
              r ∣ ↑A.den * B.num * ↑B.den
              theorem EllipticCurve.WeakMordellWeil.sq_class_curve_divides_B (A B : ℚ) (hB : B ≠ 0) (u : ℚˣ) (Y : ℚ) (hY : Y ^ 2 = ↑u * (↑u ^ 2 + A * ↑u + B)) (hN : ↑A.den * B.num * ↑B.den ≠ 0) :
              noncomputable def CanonicalHeight.canonicalHeightSeq {E : Type u_1} [AddCommGroup E] (h : E → ℝ) (P : E) (n : ℕ) :
              Instances For
                noncomputable def CanonicalHeight.canonicalHeight {E : Type u_1} [AddCommGroup E] (h : E → ℝ) (P : E) :
                Instances For
                  theorem CanonicalHeight.canonicalHeightSeq_double {E : Type u_1} [AddCommGroup E] (h : E → ℝ) (P : E) (n : ℕ) :
                  structure IsWeilHeightOnCurve {K : Type u_1} [Field K] (W : WeierstrassCurve K) (h : W.toAffine.Point → ℝ) :
                  Instances For
                    noncomputable def EllipticCurve.NeronTateHeight {K : Type u_1} [Field K] (W : WeierstrassCurve K) (h : W.toAffine.Point → ℝ) (_hWeil : IsWeilHeightOnCurve W h) (P : W.toAffine.Point) :
                    Instances For
                      theorem EllipticCurve.neronTateHeight_parallelogram_law {K : Type u_1} [Field K] [NumberField K] (W : WeierstrassCurve K) [W.IsElliptic] [NumberField K] [W.IsElliptic] (h : W.toAffine.Point → ℝ) (hWeil : IsWeilHeightOnCurve W h) (P Q : W.toAffine.Point) :
                      NeronTateHeight W h hWeil (P + Q) + NeronTateHeight W h hWeil (P - Q) = 2 * NeronTateHeight W h hWeil P + 2 * NeronTateHeight W h hWeil Q
                      noncomputable def TateTheorem.tateSeq {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (x : S) (n : ℕ) :
                      Instances For
                        @[simp]
                        theorem TateTheorem.tateSeq_zero {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (x : S) :
                        tateSeq φ h r x 0 = h x
                        theorem TateTheorem.tateSeq_dist {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (x : S) (n : ℕ) :
                        dist (tateSeq φ h r x n) (tateSeq φ h r x (n + 1)) ≤ C / r ^ (n + 1)
                        theorem TateTheorem.summable_tate_bound {r : ℝ} (hr : 1 < r) (C : ℝ) :
                        Summable fun (n : ℕ) => C / r ^ (n + 1)
                        theorem TateTheorem.tsum_tate_bound (r : ℝ) (hr : 1 < r) (C : ℝ) :
                        ∑' (n : ℕ), C / r ^ (n + 1) = C / (r - 1)
                        theorem TateTheorem.tateSeq_cauchySeq {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (x : S) :
                        CauchySeq (tateSeq φ h r x)
                        theorem TateTheorem.tateSeq_tendsto {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (x : S) :
                        theorem TateTheorem.tateSeq_comp {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (x : S) (n : ℕ) :
                        tateSeq φ h r (φ x) n = r * tateSeq φ h r x (n + 1)
                        theorem TateTheorem.tate_bound {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (x : S) :
                        |Filter.atTop.limUnder (tateSeq φ h r x) - h x| ≤ C / (r - 1)
                        theorem TateTheorem.tate_comp_eq {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (x : S) :
                        theorem TateTheorem.iterate_eq_of_comp {S : Type u_1} (φ : S → S) (f : S → ℝ) (r : ℝ) (hf_comp : ∀ (x : S), f (φ x) = r * f x) (x : S) (n : ℕ) :
                        f (φ^[n] x) = r ^ n * f x
                        theorem TateTheorem.tateSeq_const_of_comp {S : Type u_1} (φ : S → S) (f : S → ℝ) (r : ℝ) (hr : 1 < r) (hf_comp : ∀ (x : S), f (φ x) = r * f x) (x : S) (n : ℕ) :
                        tateSeq φ f r x n = f x
                        theorem TateTheorem.tendsto_div_pow_zero (r : ℝ) (hr : 1 < r) (D : ℝ) :
                        Filter.Tendsto (fun (n : ℕ) => D / r ^ n) Filter.atTop (nhds 0)
                        theorem TateTheorem.tateSeq_diff_bound {S : Type u_1} (φ : S → S) (f h : S → ℝ) (r : ℝ) (hr : 1 < r) (D : ℝ) (hD : ∀ (x : S), |f x - h x| ≤ D) (x : S) (n : ℕ) :
                        ‖tateSeq φ f r x n - tateSeq φ h r x n‖ ≤ D / r ^ n
                        theorem TateTheorem.tate_unique {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) (f : S → ℝ) (D : ℝ) (hD : ∀ (x : S), |f x - h x| ≤ D) (hf_comp : ∀ (x : S), f (φ x) = r * f x) (x : S) :
                        theorem TateTheorem.tate_theorem {S : Type u_1} (φ : S → S) (h : S → ℝ) (r : ℝ) (hr : 1 < r) (C : ℝ) (hbound : ∀ (x : S), |h (φ x) - r * h x| ≤ C) :
                        (∀ (x : S), ∃ (L : ℝ), Filter.Tendsto (tateSeq φ h r x) Filter.atTop (nhds L)) ∧ (∀ (x : S), |Filter.atTop.limUnder (tateSeq φ h r x) - h x| ≤ C / (r - 1)) ∧ (∀ (x : S), Filter.atTop.limUnder (tateSeq φ h r (φ x)) = r * Filter.atTop.limUnder (tateSeq φ h r x)) ∧ ∀ (f : S → ℝ) (D : ℝ), (∀ (x : S), |f x - h x| ≤ D) → (∀ (x : S), f (φ x) = r * f x) → ∀ (x : S), f x = Filter.atTop.limUnder (tateSeq φ h r x)
                        theorem Northcott.mulHeight₁_le_mulHeight_of_one_eq {K : Type u_1} [Field K] [NumberField K] {n : ℕ} (x : Fin (n + 1) → K) (_hx : x ≠ 0) (i₀ : Fin (n + 1)) (hi₀ : x i₀ = 1) (j : Fin (n + 1)) :
                        noncomputable def Northcott.mapCoords {K : Type u_1} {L : Type u_2} [CommRing K] [CommRing L] (σ : K →+* L) (n : ℕ) :
                        (Fin (n + 1) → K) →ₛₗ[σ] Fin (n + 1) → L
                        Instances For
                          theorem Northcott.mapCoords_injective {K : Type u_1} {L : Type u_2} [CommRing K] [CommRing L] {σ : K →+* L} (hσ : Function.Injective ⇑σ) (n : ℕ) :
                          theorem Northcott.northcott_theorem_25_18 (n d : ℕ) (B : ℝ) :
                          {P : Projectivization ℂ (Fin (n + 1) → ℂ) | ∃ (K : Type) (x : Field K) (x_1 : NumberField K) (σ : K →+* ℂ), Module.finrank ℚ K ≤ d ∧ ∃ (Q : Projectivization K (Fin (n + 1) → K)), Q.mulHeight ≤ B ∧ P = Projectivization.map (mapCoords σ n) ⋯ Q}.Finite
                          theorem addGroup_fg_of_height_descent {G : Type u_1} [AddCommGroup G] (ĥ : G → ℝ) (hĥ_nonneg : ∀ (P : G), 0 ≤ ĥ P) (hĥ_double : ∀ (P : G), ĥ (2 • P) = 4 * ĥ P) (hĥ_par : ∀ (P Q : G), ĥ (P + Q) + ĥ (P - Q) = 2 * ĥ P + 2 * ĥ Q) (hquot : Finite (G ⧸ (zsmulAddGroupHom 2).range)) (hNorthcott : ∀ (B : ℝ), {P : G | ĥ P ≤ B}.Finite) :
                          def IsProjectiveMorphism {K : Type u_1} [CommRing K] {n m : ℕ} (d : ℕ) (φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K) :
                          Instances For
                            theorem projective_nullstellensatz_cofactors {K : Type u_1} [Field K] {n m d : ℕ} {φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : IsProjectiveMorphism d φ) :
                            ∃ (M : ℕ) (q : Fin (n + 1) × Fin (m + 1) → MvPolynomial (Fin (n + 1)) K), (∀ (a : Fin (n + 1) × Fin (m + 1)), (q a).IsHomogeneous M) ∧ ∀ (x : Fin (n + 1) → K) (k : Fin (n + 1)), ∑ j : Fin (m + 1), (MvPolynomial.eval x) (q (k, j)) * (MvPolynomial.eval x) (φ j) = x k ^ (M + d)
                            theorem theorem_25_14_upper_bound {K : Type u_1} [Field K] [NumberField K] {n m d : ℕ} {φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : IsProjectiveMorphism d φ) :
                            ∃ (C₁ : ℝ), ∀ (x : Fin (n + 1) → K), (Height.logHeight fun (j : Fin (m + 1)) => (MvPolynomial.eval x) (φ j)) ≤ C₁ + ↑d * Height.logHeight x
                            theorem theorem_25_14_lower_bound {K : Type u_1} [Field K] [NumberField K] {n m d : ℕ} {φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : IsProjectiveMorphism d φ) :
                            ∃ (C₂ : ℝ), ∀ (x : Fin (n + 1) → K), C₂ + ↑d * Height.logHeight x ≤ Height.logHeight fun (j : Fin (m + 1)) => (MvPolynomial.eval x) (φ j)
                            theorem theorem_25_14_combined {K : Type u_1} [Field K] [NumberField K] {n m d : ℕ} {φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K} (hφ : IsProjectiveMorphism d φ) :
                            ∃ (C : ℝ), ∀ (x : Fin (n + 1) → K), |(Height.logHeight fun (j : Fin (m + 1)) => (MvPolynomial.eval x) (φ j)) - ↑d * Height.logHeight x| ≤ C