Documentation

TauCeti.AlgebraicGeometry.EllipticCurve.Affine.ValuationIntegrality

Integral points of a Weierstrass curve over a valued field #

Let F be a field, let v be a valuation on F, let O be the valuation subring of v, and let W be a Weierstrass curve over F admitting a model over O. This file records the valuation estimates that such a model forces, and the dichotomy they produce for the coordinates of an affine point.

The dichotomy is the sharp one: v(x) is never exp 1. Either the point is integral, v(x) ≤ 1 and v(y) ≤ 1, or it is a pole of order at least two in x, exp 2 ≤ v(x). There is nothing in between: at a pole v(y)² = v(x)³, and exp 3 is not a square, which rules out the one intermediate value. Only pole order one is excluded here — the general statement that every pole order is even is not proved.

The two halves need different hypotheses, and are stated that way. The coefficient bounds — and the estimates on the two sides of the Weierstrass equation — never look at the value group, so they are stated for an arbitrary Γ₀. Only the dichotomy needs Γ₀ = ℤᵐ⁰, because the parity argument that rules out v(x) = exp 1 is about the exponent being an integer.

The valuation is taken as an explicit argument rather than through Valued F Γ₀. Nothing here uses a topology, and a fixed field carries many valuations at once — the intended consumers are the IsDedekindDomain.HeightOneSpectrum.valuation of a varying prime, which cannot all be Valued instances on F simultaneously.

Main results #

Implementation notes #

The hypothesis "W has a model over O" is Mathlib's WeierstrassCurve.IsIntegral O W, and the model itself is WeierstrassCurve.integralModel O W; the coefficient bounds are then Mathlib's WeierstrassCurve.integralModel_aᵢ_eq composed with membership in O.

The y-half of the dichotomy is not reproved by a valuation computation. Once x is known to be integral, TauCeti.WeierstrassCurve.isIntegral_y_of_equation_of_isIntegral_x gives that y is integral over O from the curve equation alone, over any algebra and with no valuation in sight; O is a valuation subring, hence integrally closed in F, so integrality over it is membership. That is how the main theorem discharges its y-half. Only the x-half — the parity argument that rules out v(x) = exp 1 — is genuinely about the valuation, and it is the only half that needs the estimates below.

Placement #

Every declaration here lives in WeierstrassCurve.Affine, and the file's content is the integrality of an affine point; exp_one_pow is a local WithZero.exp helper with no curve content. The file sits in EllipticCurve/Affine/ with the rest of the affine-point API.

It is not under FormalGroup/, although the formal group is what makes these estimates wanted: they are what identifies the kernel of reduction, on which the formal group converges, as the locus exp 2 ≤ v(x). But nothing here mentions a power series. No FormalGroup/ file imports this module today — the milestones below are the future consumers.

This supplies the valuation substrate for the formal-group milestones of TauCetiRoadmap/EllipticCurves/README.md, Layer 1, item "The formal group — four milestones with four different hypothesis sets, not one" (README:572): milestone (iii), convergence over a complete valued field, and milestone (iv), the identification with the kernel of reduction for an integral model.

References #

Provenance #

Adapted from the Stoll EllipticCurves development (github.com/MichaelStollBayreuth/EllipticCurves, Apache-2.0, pinned by TauCetiRoadmap/EllipticCurves/README.md at 66889eada51a), EllipticCurves/WeierstrassFormalGroup/Foundations.lean: valued_a₁valued_a₄ (:125–:128), valued_a₆ (:129), valued_lhs_eq_rhs (:72), valued_rhs_eq (:132), valued_lhs_eq (:164), valued_lhs_le (:185), valued_ne_exp_one (:202) and integral_of_not_mem (:264), which is valuation_x_le_one_and_valuation_y_le_one_of_valuation_x_lt_exp_two here.

Five departures. The source's private coe_a₁coe_a₆ (:110–:122) are not ported: they restate the structure map for a model carried in the signature, whereas the model here is Mathlib's integralModel, so the five coefficient bounds are integralModel_aᵢ_eq plus membership in O. The setting is more general: the source works over v.adicCompletion K and v.adicCompletionIntegers K, whereas no step uses completeness, the Dedekind hypothesis, or a topology, so the results are stated for a bare (v : Valuation F Γ₀) and its valuation subring — a weaker hypothesis set that still covers the source's case, adicCompletionIntegers being by definition the valuation subring of Valued.v. valuation_a₆_le_one is public here although the source's valued_a₆ (:129) is private: the five coefficient bounds are one API, and a consumer holding an integral model needs all five. The hypothesis is stated positively as v x < exp 2 rather than the source's ¬ exp 2 ≤ v x. And the y-half is proved by reuse rather than by the source's valuation computation: the source derives it from a valued_rhs_le bound (:151), whereas here isIntegral_y_of_equation_of_isIntegral_x plus integral closedness of O gives it directly, so that bound has no consumer and is not ported.

The coefficient bounds, over an arbitrary value group #

Nothing in this section looks at the value group: an integral model bounds the coefficients, and the two sides of the Weierstrass equation are estimated, for any Γ₀. Only the dichotomy below needs Γ₀ = ℤᵐ⁰.

Field F cannot be weakened here: Valuation.valuationSubring is defined only for a field (Mathlib/RingTheory/Valuation/ValuationSubring.lean:33).

A curve over a trivially valued base has an integral model. Every coefficient of W⁄K is the image of one of W's, and a valuation trivial on F puts all of those in its valuation subring.

theorem WeierstrassCurve.Affine.valuation_a₁_le_one {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] :
v W.a₁ 1

The a₁-coefficient of a curve with an integral model is integral.

theorem WeierstrassCurve.Affine.valuation_a₂_le_one {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] :
v W.a₂ 1

The a₂-coefficient of a curve with an integral model is integral.

theorem WeierstrassCurve.Affine.valuation_a₃_le_one {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] :
v W.a₃ 1

The a₃-coefficient of a curve with an integral model is integral.

theorem WeierstrassCurve.Affine.valuation_a₄_le_one {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] :
v W.a₄ 1

The a₄-coefficient of a curve with an integral model is integral.

theorem WeierstrassCurve.Affine.valuation_a₆_le_one {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] :
v W.a₆ 1

The a₆-coefficient of a curve with an integral model is integral.

theorem WeierstrassCurve.Affine.valuation_x_lt_valuation_y {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] {x y : F} (hxy : W.Equation x y) (hx : 1 < v x) :
v x < v y

At a pole of x, the y-coordinate strictly dominates.

theorem WeierstrassCurve.Affine.valuation_y_sq_eq_valuation_x_cube {F : Type u_1} [Field F] {Γ₀ : Type u_2} [LinearOrderedCommGroupWithZero Γ₀] (v : Valuation F Γ₀) {W : Affine F} [IsIntegral (↥v.valuationSubring) W] {x y : F} (hxy : W.Equation x y) (hx : 1 < v x) :
v y ^ 2 = v x ^ 3

A pole of x forces one of y, of three halves the order. On a point of the curve whose x-coordinate is not integral, v(y)² = v(x)³: writing the valuations additively, x has a pole of order 2e and y one of order 3e. Neither coordinate can dominate the other by any other ratio, because the two sides of the Weierstrass equation must agree.

The dichotomy, over a discretely valued field #

This is where Γ₀ = ℤᵐ⁰ is used: the parity argument that rules out v(x) = exp 1 needs the value group to be . The bounds above are applied at Γ₀ := ℤᵐ⁰.

An affine point whose x-coordinate has pole order less than two is integral.

The x-coordinate of an affine point of W is either integral or has a pole of order at least two, and in the former case the y-coordinate is integral too.