Documentation

LeanPool.FLTEichlerShimura.Definitions.Def_EllipticCurve_WeilPairingFun

Weil functions and a point-level Weil pairing constant #

Definition: EllipticCurve_WeilPairingFun (1bf92a85-c3e9-5b97-802c-d79bf412e655), by Claude, 2026-09-05.

Throughout, $W$ is a Weierstrass curve over a field $R$ and $K$ is a field equipped with an $R$-algebra structure; $(W⁄K)$ denotes the base-changed affine curve, with its coordinate ring $(W⁄K)$.CoordinateRing, its function field $(W⁄K)$.FunctionField and its group of points $(W⁄K)$.Point. For a point $P$, placeIdeal W K P is the unit ideal when $P = 0$ and otherwise the underlying ideal of the height-one place placeOf W K P, namely the maximal ideal $(x - x_P,,y

Assuming in addition that $K$ is algebraically closed and $W$ is elliptic, weilPairing0 W K n S T is defined to be a unit $c \in K^{\times}$ satisfying $\tau_S^{*}(g_{n,T}) = c \cdot g_{n,T}$, where $\tau_S^{*} =$ transEquiv W K S is the automorphism of the function field pulling back along translation by $S$ and $g_{n,T} =$ weilFun W K n T, and to be $1$ when no such unit exists. The defining relation (transEquiv_weilFun) and the fallback value (weilPairing0_of_not) are recorded as the two characterising lemmas; no bilinearity, alternation or non-degeneracy is asserted at this stage.

Relation to Mathlib. Mathlib supplies the affine coordinate ring of a Weierstrass curve, its ideals XYIdeal/XClass/YClass and the group of affine points; the places attached to points, the translation automorphisms of the function field, and the Weil functions and pairing constant defined here are the project's own, Mathlib having no Weil pairing.

Where it is used. These Weil functions and the constant $e_0$ attached to a pair of points are the basis for the project's treatment of the Weil pairing on $n$-torsion, whose bilinearity, alternation and Galois equivariance give the determinant of the mod-$n$ representation attached to an elliptic curve as the cyclotomic character.

<!-- Generated by add_prove2me_provenance.py -->

noncomputable def WeierstrassCurve.Affine.placeIdeal {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] (P : (baseChange W K).Point) :

The coordinate-ring ideal of a nonzero point, with the unit ideal at infinity.

Equations
Instances For
    theorem WeierstrassCurve.Affine.placeIdeal_of_ne_zero {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] {P : (baseChange W K).Point} (hP : P ≠ 0) :
    placeIdeal W K P = (placeOf W K P hP).asIdeal
    def WeierstrassCurve.Affine.fibSet {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] (n : ℤ) (Q : (baseChange W K).Point) :

    The set of points mapped to Q by multiplication by the integer n.

    Equations
    Instances For
      @[simp]
      theorem WeierstrassCurve.Affine.mem_fibSet {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] {n : ℤ} {Q P : (baseChange W K).Point} :
      P ∈ fibSet W K n Q ↔ n • P = Q
      noncomputable def WeierstrassCurve.Affine.fibIdeal {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] (n : ℤ) (Q : (baseChange W K).Point) :

      The product of point ideals over the multiplication fiber, or the unit ideal if the fiber is infinite.

      Equations
      Instances For
        theorem WeierstrassCurve.Affine.fibIdeal_eq {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] {n : ℤ} {Q : (baseChange W K).Point} (h : (fibSet W K n Q).Finite) :
        fibIdeal W K n Q = ∏ P ∈ h.toFinset, placeIdeal W K P
        noncomputable def WeierstrassCurve.Affine.weilNum {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] (n : ℤ) (T : (baseChange W K).Point) :

        A chosen generator of the fiber ideal when it is principal, and one otherwise.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          theorem WeierstrassCurve.Affine.span_weilNum {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] {n : ℤ} {T : (baseChange W K).Point} (h : Submodule.IsPrincipal (fibIdeal W K n T)) :
          Ideal.span {weilNum W K n T} = fibIdeal W K n T
          noncomputable def WeierstrassCurve.Affine.weilFun {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] (n : ℤ) (T : (baseChange W K).Point) :

          The ratio of fiber-ideal generators over T and over zero, as a function-field element.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            noncomputable def WeierstrassCurve.Affine.weilPairing0 {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] (n : ℤ) (S T : (baseChange W K).Point) :

            The unit scaling weilFun n T under translation by S, if one exists; otherwise one.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem WeierstrassCurve.Affine.transEquiv_weilFun {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} {S T : (baseChange W K).Point} (h : ∃ (c : Kˣ), (transEquiv W K S) (weilFun W K n T) = (algebraMap K (baseChange W K).FunctionField) ↑c * weilFun W K n T) :
              (transEquiv W K S) (weilFun W K n T) = (algebraMap K (baseChange W K).FunctionField) ↑(weilPairing0 W K n S T) * weilFun W K n T
              theorem WeierstrassCurve.Affine.weilPairing0_of_not {R : Type u_1} [Field R] (W : WeierstrassCurve R) (K : Type u_2) [Field K] [Algebra R K] [DecidableEq K] [IsAlgClosed K] [W.IsElliptic] {n : ℤ} {S T : (baseChange W K).Point} (h : ¬∃ (c : Kˣ), (transEquiv W K S) (weilFun W K n T) = (algebraMap K (baseChange W K).FunctionField) ↑c * weilFun W K n T) :
              weilPairing0 W K n S T = 1