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
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
theorem
NumberField.FinitePlace.isFinitePlace_comp_galois
{K : Type u_1}
[Field K]
[NumberField K]
(σ : Gal(K/ℚ))
(v : FinitePlace K)
:
∃ (w : IsDedekindDomain.HeightOneSpectrum (RingOfIntegers K)), place (embedding w) = (↑v).comp ⋯
Instances For
theorem
galoisEquivFinitePlace_apply
{K : Type u_1}
[Field K]
[NumberField K]
(σ : Gal(K/ℚ))
(v : NumberField.FinitePlace K)
(y : K)
:
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)
:
structure
EllipticCurve.WeakMordellWeil.TwoIsogenyData
(W : WeierstrassCurve ℚ)
[W.IsElliptic]
:
Type 1
- E'Points : Type
- instAddCommGroup : AddCommGroup self.E'Points
- descentTarget : Type
- instDescentTargetGroup : AddCommGroup self.descentTarget
- descentMap_range_finite : Finite ↥self.descentMap.range
- descentTarget' : Type
- instDescentTarget'Group : AddCommGroup self.descentTarget'
- descentMap'_range_finite : Finite ↥self.descentMap'.range
Instances For
theorem
EllipticCurve.WeakMordellWeil.lemma_25_3_phi
{W : WeierstrassCurve ℚ}
[W.IsElliptic]
(data : TwoIsogenyData W)
:
theorem
EllipticCurve.WeakMordellWeil.lemma_25_3_phi_hat
{W : WeierstrassCurve ℚ}
[W.IsElliptic]
(data : TwoIsogenyData W)
:
theorem
EllipticCurve.WeakMordellWeil.square_class_mk_mul
(x y : ℚ)
(hx : x ≠ 0)
(hy : y ≠ 0)
:
(QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 (x * y) ⋯) = (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 x hx) * (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 y hy)
theorem
EllipticCurve.WeakMordellWeil.square_class_mul_eq_div
(x y : ℚ)
(hx : x ≠ 0)
(hy : y ≠ 0)
:
(QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 (x * y) ⋯) = (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 (x / y) ⋯)
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₂))
:
descentMapRaw a b hdisc (WeierstrassCurve.Affine.Point.some x₁ y₁ h₁ + WeierstrassCurve.Affine.Point.some x₂ y₂ h₂) = descentMapRaw a b hdisc (WeierstrassCurve.Affine.Point.some x₁ y₁ h₁) + descentMapRaw a b hdisc (WeierstrassCurve.Affine.Point.some x₂ y₂ h₂)
theorem
EllipticCurve.WeakMordellWeil.lemma_25_4_concrete
(a b : ℚ)
(hE' : (E'Curve a b).IsElliptic)
(hdisc : a ^ 2 - 4 * b ≠ 0)
:
∃ (π : (E'Curve a b).toAffine.Point →+ Additive (ℚˣ ⧸ Subgroup.square ℚˣ)),
(∀ (x y : ℚ) (hxy : (E'Curve a b).toAffine.Nonsingular x y) (hx : x ≠ 0),
π (WeierstrassCurve.Affine.Point.some x y hxy) = Additive.ofMul ((QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 x hx))) ∧ ∀ (hns : (E'Curve a b).toAffine.Nonsingular 0 0),
π (WeierstrassCurve.Affine.Point.some 0 0 hns) = Additive.ofMul ((QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 (a ^ 2 - 4 * b) hdisc))
theorem
EllipticCurve.WeakMordellWeil.sq_class_of_rat_unit
(u : ℚˣ)
:
(QuotientGroup.mk' (Subgroup.square ℚˣ)) u = (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 ↑((↑u).num * ↑(↑u).den) ⋯)
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)
:
(QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 ↑n ⋯) = (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 ↑r ⋯)
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)
:
∃ (d : ℤ) (hd : d ∣ ↑A.den * B.num * ↑B.den),
(QuotientGroup.mk' (Subgroup.square ℚˣ)) u = (QuotientGroup.mk' (Subgroup.square ℚˣ)) (Units.mk0 ↑d ⋯)
theorem
EllipticCurve.WeakMordellWeil.corollary_25_6
(W : WeierstrassCurve ℚ)
[W.IsElliptic]
(data : TwoIsogenyData W)
:
theorem
EllipticCurve.WeakMordellWeil.corollary_25_7_index
(W : WeierstrassCurve ℚ)
[W.IsElliptic]
(data : TwoIsogenyData W)
:
theorem
EllipticCurve.WeakMordellWeil.corollary_25_7
(W : WeierstrassCurve ℚ)
[W.IsElliptic]
(data : TwoIsogenyData W)
:
theorem
EllipticCurve.WeakMordellWeil.corollary_25_7'
(W : WeierstrassCurve ℚ)
[W.IsElliptic]
(data : TwoIsogenyData W)
:
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 : ℕ)
:
theorem
CanonicalHeight.canonicalHeight_double
{E : Type u_1}
[AddCommGroup E]
(h : E → ℝ)
(P : E)
(hconv : Filter.Tendsto (canonicalHeightSeq h P) Filter.atTop (nhds (canonicalHeight h P)))
:
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
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)
:
Filter.Tendsto (tateSeq φ h r x) Filter.atTop (nhds (Filter.atTop.limUnder (tateSeq φ h r 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.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.finite_roots_of_bounded_mahler_degree
(d : ℕ)
(B : NNReal)
:
{α : ℂ | ∃ (p : Polynomial ℤ),
p ≠ 0 ∧ p.natDegree ≤ d ∧ (Polynomial.map (Int.castRingHom ℂ) p).mahlerMeasure ≤ ↑B ∧ (Polynomial.map (Int.castRingHom ℂ) p).IsRoot α}.Finite
theorem
Northcott.mahlerMeasure_intNorm_minpoly_le_height_ax
(K : Type u_1)
[Field K]
[NumberField K]
(x : K)
:
theorem
Northcott.mahlerMeasure_intNorm_minpoly_le_height
(K : Type u_1)
[Field K]
[NumberField K]
(x : K)
:
theorem
Northcott.exists_intPoly_of_mulHeight₁_le
(K : Type u_1)
[Field K]
[NumberField K]
(σ : K →+* ℂ)
(x : K)
(B : NNReal)
(hxB : Height.mulHeight₁ x ≤ ↑B)
:
∃ (p : Polynomial ℤ),
p ≠ 0 ∧ p.natDegree ≤ Module.finrank ℚ K ∧ (Polynomial.map (Int.castRingHom ℂ) p).mahlerMeasure ≤ ↑(B ^ Module.finrank ℚ K) ∧ (Polynomial.map (Int.castRingHom ℂ) p).IsRoot (σ x)
theorem
Northcott.mapCoords_injective
{K : Type u_1}
{L : Type u_2}
[CommRing K]
[CommRing L]
{σ : K →+* L}
(hσ : Function.Injective ⇑σ)
(n : ℕ)
:
Function.Injective ⇑(mapCoords σ n)
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)
:
theorem
projective_nullstellensatz_cofactors
{K : Type u_1}
[Field K]
{n m d : ℕ}
{φ : Fin (m + 1) → MvPolynomial (Fin (n + 1)) K}
(hφ : IsProjectiveMorphism 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