Documentation

TauCeti.AlgebraicGeometry.EllipticCurve.Isogeny.RelativeFrobenius.Basic

The relative Frobenius isogeny #

When p > 1 (equivalently, when F has positive characteristic), raising to the p-th power is a ring endomorphism of F but not an F-algebra map, so it does not turn a Weierstrass curve into an endomorphism of itself unless F is a prime field. When p = 1, the characteristic-zero case, this map is the identity. In either case it gives a map to the Frobenius twist W⁽ᵖ⁾, whose a-invariants are the p-th powers of those of W: Mathlib's W.map (frobenius F p), with WeierstrassCurve.map_a₁ and its siblings for the coefficient description and WeierstrassCurve.map_map for iteration. The relative Frobenius F_{W/F} : W → W⁽ᵖ⁾ is then an honest F-morphism, the one that reads (x, y) ↦ (xᵖ, yᵖ) on points.

Contravariantly, that is the F-algebra map out of the coordinate ring of the twist sending the two coordinates of W⁽ᵖ⁾ to the p-th powers of the coordinates of W. It is well defined because the Weierstrass polynomial of the twist is the image of that of W under the coefficient Frobenius, so substituting p-th powers into it produces the p-th power of the Weierstrass polynomial of W, which vanishes on the coordinate ring. The resulting map lands in W.CoordinateRing, not merely in W.FunctionField: relative Frobenius is a morphism of affine curves.

Over a finite field the q-power map is already an F-algebra map, and TauCeti.Isogeny.frobeniusIsogeny is the resulting self-isogeny. The construction here is the one that survives over an arbitrary — in particular imperfect — base, at the cost of a moving target.

That coordinate-ring map is an input from Affine/RelativeFrobenius.lean, which declares it as CoordinateRing.relativeFrobenius together with its factorisation relativeFrobenius_comp_map of the p-power map of W.CoordinateRing into Mathlib's semilinear base-change map followed by an F-linear one; the pointedness of the isogeny below and its pure inseparability are both read off that factorisation.

Main definitions #

Main results #

The degree is the shared tower comparison WeierstrassCurve.Affine.finrank_fieldRange_of_apply_X_eq_pow, applied to the pullback: over the copy of F(xᵖ) inside F(W), that copy sits below F(x) with relative degree p and below the pulled-back F(W⁽ᵖ⁾) with relative degree 2, while [F(W) : F(x)] = 2. The finite-field WeierstrassCurve.Affine.finrank_fieldRange_frobeniusAlgHom is the same lemma applied to the q-power map. Likewise the pulled-back function field is the shared WeierstrassCurve.Affine.fieldRange_eq_adjoin_range_pow, applied to the one-step and the iterated pullback at their values xᵖ, yᵖ and x ^ (p ^ n), y ^ (p ^ n) at the generic point.

No result here needs W to be elliptic, matching the isogeny API it extends; Mathlib's WeierstrassCurve.instIsEllipticMap supplies (W.map (frobenius F p)).IsElliptic for a consumer that does want it.

References #

Provenance #

Not a port. The pinned sources of this roadmap build only the absolute q-power Frobenius of a curve over a finite field (AINTLIB's HasseWeil/FrobeniusIsogeny.lean, already migrated as TauCeti.Isogeny.frobeniusIsogeny and WeierstrassCurve.Affine.finrank_fieldRange_frobeniusAlgHom); the relative Frobenius over an arbitrary base, and the twist it maps to, appear in none of them. The degree computation reuses the migrated tower argument of TauCeti/AlgebraicGeometry/EllipticCurve/Affine/FunctionField/PowerTower.lean, which carries the AINTLIB credit for it, and whose ratFuncAdjoinXPowRange API rests on TauCeti.RatFunc.finrank_adjoin_X_pow from TauCeti/FieldTheory/RatFunc/PowerTower.lean.

The relative Frobenius isogeny #

The relative Frobenius pullback: CoordinateRing.relativeFrobenius read into the function field of W.

Equations
Instances For
    @[simp]

    The relative Frobenius pullback is the coordinate-ring map followed by the embedding of W.CoordinateRing in its fraction field.

    The relative Frobenius maps the point at infinity to the point at infinity. Every element of W.CoordinateRing is a p-th root of an element pulled back from the twist, hence integral over the pulled-back coordinate ring.

    noncomputable def TauCeti.Isogeny.relativeFrobeniusIsogeny {F : Type u_1} [Field F] (p : ℕ) [ExpChar F p] (W : WeierstrassCurve.Affine F) :
    Isogeny W (W.map (frobenius F p))

    The relative Frobenius isogeny F_{W/F} : W → W⁽ᵖ⁾.

    Equations
    Instances For

      The function-field pullback of a base-changed coordinate function is its p-th power.

      Deliberately not @[simp]. Its left-hand side is already dismantled by the @[simp] chain Isogeny.fieldPullback_algebraMap, relativeFrobeniusIsogeny_pullback, relativeFrobeniusPullback_apply and CoordinateRing.relativeFrobenius_map, so tagging it fails simpNF; it is stated because it is the field-level form the pure-inseparability argument below quotes.

      F(W)ᵖ lies in the pulled-back copy of F(W⁽ᵖ⁾). A quotient of two coordinate functions has its p-th power the quotient of two pullbacks.

      The relative Frobenius isogeny is purely inseparable (Silverman II.2.11(b)).

      The degree #

      @[simp]

      The relative Frobenius pullback sends the affine coordinate of the twist to xᵖ.

      @[simp]

      The relative Frobenius isogeny has degree p (Silverman II.2.11(c)). This is the tower comparison WeierstrassCurve.Affine.finrank_fieldRange_of_apply_X_eq_pow, whose only input is the value of the pullback at the affine coordinate: both F(x) and the pulled-back F(W⁽ᵖ⁾) sit between F(xᵖ) and F(W), of relative degrees p and 2 over it, and [F(W) : F(x)] = 2 as well, so the two towers give 2 · deg = p · 2.

      The relative Frobenius isogeny has separable degree one, as pure inseparability requires.

      Deliberately not @[simp]. The isPurelyInseparable_relativeFrobeniusIsogeny instance already lets the @[simp] lemma separableDegree_eq_one_of_isPurelyInseparable close this goal, so tagging it fails simpNF with simp can prove this; it is stated as the named specialisation a consumer quotes, exactly as separableDegree_frobeniusIsogeny is for the absolute Frobenius.

      The relative Frobenius isogeny carries its whole degree p in the inseparable part.

      Deliberately not @[simp]. Its left-hand side is already rewritten to p by the @[simp] pair inseparableDegree_eq_degree_of_isPurelyInseparable and degree_relativeFrobeniusIsogeny, so tagging it fails simpNF; it is stated for the same reason as separableDegree_relativeFrobeniusIsogeny above.

      The image of the pullback #

      @[simp]

      The relative Frobenius pullback sends the generic x-coordinate of the twist to xᵖ.

      @[simp]

      The relative Frobenius pullback sends the generic y-coordinate of the twist to yᵖ.

      The pulled-back copy of F(W⁽ᵖ⁾) is F(F(W)ᵖ), the subfield generated over the constants by the p-th powers (Silverman II.2.11(a), in the form valid over every base field: over a perfect F the constants are themselves p-th powers and this is F(W)ᵖ). This is WeierstrassCurve.Affine.fieldRange_eq_adjoin_range_pow at the values xᵖ, yᵖ of the pullback at the generic point.

      @[simp]

      The universal property of the pulled-back F(W⁽ᵖ⁾): it lies inside an intermediate field exactly when every p-th power does.

      Iterated relative Frobenius #

      The iterated relative Frobenius pullback. It reads the coordinate-ring map CoordinateRing.iterateRelativeFrobenius into W.FunctionField.

      Equations
      Instances For
        @[simp]

        The iterated relative Frobenius pullback is the coordinate-ring map followed by the canonical embedding into the function field.

        The iterated relative Frobenius maps infinity to infinity. Every element of W.CoordinateRing has its p ^ n-th power in the pulled-back coordinate ring and is therefore integral over that ring.

        noncomputable def TauCeti.Isogeny.iterateRelativeFrobeniusIsogeny {F : Type u_1} [Field F] (p : ℕ) [ExpChar F p] (W : WeierstrassCurve.Affine F) (n : ℕ) :

        The n-fold relative Frobenius isogeny W → W.map (iterateFrobenius F p n).

        Equations
        Instances For
          @[simp]

          The first iterated relative Frobenius is the one-step relative Frobenius, after identifying their target curves via iterateFrobenius_one.

          The coefficient Frobenius followed by the iterated relative Frobenius pullback is iterated Frobenius on the function field, as an equality of ring homomorphisms.

          @[simp]

          The coefficient Frobenius followed by the iterated relative Frobenius pullback is the p ^ n-power map on the function field, including its rational functions.

          The coefficient Frobenius followed by relative Frobenius is Frobenius on the function field, as an equality of ring homomorphisms.

          @[simp]

          The coefficient Frobenius followed by relative Frobenius is the p-power map on the function field.

          Every p ^ n-th power in F(W) lies in the pulled-back function field of the n-th Frobenius twist.

          @[simp]

          The iterated relative Frobenius pullback sends the affine coordinate of the twist to x ^ (p ^ n).

          @[simp]

          The n-fold relative Frobenius has degree p ^ n.

          @[simp]

          The iterated relative Frobenius pullback sends the generic x-coordinate of the twist to x ^ (p ^ n).

          @[simp]

          The iterated relative Frobenius pullback sends the generic y-coordinate of the twist to y ^ (p ^ n).

          The pulled-back copy of F(W⁽ᵖⁿ⁾) is F(F(W)^(pⁿ)), the subfield generated over the constants by the p ^ n-th powers: the iterate of fieldRange_relativeFrobeniusIsogeny, read off WeierstrassCurve.Affine.fieldRange_eq_adjoin_range_pow in the same way.

          @[simp]

          The universal property of the pulled-back F(W⁽ᵖⁿ⁾): it lies inside an intermediate field exactly when every p ^ n-th power does.

          The pulled-back copies of the twists decrease along the Frobenius tower: for m ≤ n, the pulled-back F(W⁽ᵖⁿ⁾) lies inside the pulled-back F(W⁽ᵖᵐ⁾), as every p ^ n-th power is a p ^ m-th power.