Documentation

TauCeti.AlgebraicGeometry.EllipticCurve.Affine.FunctionField.AdjoinTower

The tower K⟮g⟯ ⊆ K(x) ⊆ K(W) over an arbitrary generator #

For a rational function g, the subfield K⟮g⟯ of K(x) has a copy inside the function field K(W) of a Weierstrass curve. This file computes the two degrees of the resulting tower in terms of the single input [K(x) : K⟮g⟯]: the inner storey contributes that degree, the outer storey contributes two, and an embedding of function fields carrying the affine coordinate to g has image of index exactly [K(x) : K⟮g⟯].

Everything here is generator-agnostic. A caller supplies g together with a theorem computing Module.finrank K⟮g⟯ (RatFunc K), and gets the whole tower back; PowerTower.lean does this for g = X ^ n, where that degree is n.

The copy of K⟮g⟯ inside K(W) is Mathlib's IntermediateField.extendRight, written (IntermediateField.adjoin K {g}).extendRight W.FunctionField; this file adds the degree lemmas for it in this tower and no new object. Its membership and order API is generic and lives in TauCeti.FieldTheory.IntermediateField.ExtendRight.

Main results #

No result needs W to be elliptic: the Weierstrass equation alone gives the power basis, through finrank_ratFuncRange.

The Frobenius degree computation is a specialisation of this tower, through PowerTower.lean.

Provenance #

The argument, naming scheme and proof shapes are Affine/FunctionField/PowerTower.lean's, stated here for an arbitrary generator instead of X ^ n. The finite-field ancestor of both is the AINTLIB HasseWeil project (github.com/CBirkbeck/AINTLIB, Apache-2.0, pinned at 513e83879e2f8cbc626eb9e04d660e92be16ccba), HasseWeil/FrobeniusIsogeny.lean, private declarations frobFracRange, frobFracRange_le_frobRange, finrank_frobFracRange_functionField and finrank_over_frobenius_image, where the exponent is the cardinality of a finite field.

Any subfield of K(x) sits inside K(x), both read inside K(W).

@[simp]

[K(x) : F], read inside K(W), is the degree it has inside K(x) itself.

@[simp]

[K(W) : F] = 2 · [K(x) : F]: the inner storey contributes the degree of F and the outer one contributes two. When K(x) is infinite-dimensional over F both sides are 0, Module.finrank's value there.

The copy of K⟮g⟯ inside K(W) is the image of the rational function field of W', for any embedding f : K(W') → K(W) of function fields carrying the affine coordinate of W' to g. This is the field the degree tower below is anchored at, in its two descriptions.

[K(W) : f(K(W'))] = [K(x) : K⟮g⟯] for an embedding f : K(W') → K(W) of function fields carrying the affine coordinate of W' to g. Both K(x) and the image of K(W') lie between K⟮g⟯ and K(W), of relative degrees [K(x) : K⟮g⟯] and 2 over it; since [K(W) : K(x)] = 2 as well, the two towers give 2 · [K(W) : f(K(W'))] = 2 · [K(x) : K⟮g⟯].