Module

PoleData.lean

Nyll.AlgebraicCurves.Divisors.PoleData
10 declarations indexed from sourceView source ↗

Algebra, divisors, and base change

Pole-divisor bounds, coordinate towers, and independent bounded function families for function fields.

Imports2
Imported by19

Declarations

AlgebraicCurve.PoleDivisorPackage

An effective pole divisor and bounded functions whose powers form a linearly independent family.

Source context 2 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
structure PoleDivisorPackage (K F : Type*) [Field K] [Field F] [Algebra K F] where
  /-- The function whose nonnegative powers are used in the independent family. -/
  x : F
  /-- The effective divisor bounding the poles of the chosen function. -/
  B : Divisor K F
  /-- The pole bound is an effective divisor. -/
  hB_eff : 0 ≤ B
  /-- The chosen function belongs to the Riemann space of the pole bound. -/
  hx_mem : x ∈ LSpace B
  /-- The positive degree of the pole bound and the size of the bounded function family. -/
  n : ℕ
  /-- The degree parameter is positive. -/
  hn_pos : 0 < n
  /-- The degree of the pole bound equals the chosen parameter. -/
  degB_eq : Divisor.degree B = n
  /-- The multiple of the pole bound containing the bounded function family. -/
  c : ℕ
  /-- The finite family of functions used with powers of the chosen function. -/
  u : Fin n → F
  /-- Every member of the finite family lies in the specified Riemann space. -/
  hu_mem : ∀ i, u i ∈ LSpace (c • B)
  /-- Products of powers of the chosen function with the finite family are linearly
  independent. -/
  lin_indep : LinearIndependent K (fun p : ℕ × Fin n => x ^ p.1 * u p.2)
AlgebraicCurve.HasPoleDivisorPackage

An effective pole-divisor package exists for the function field.

Source context 2 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
def HasPoleDivisorPackage (K F : Type*) [Field K] [Field F] [Algebra K F] : Prop
AlgebraicCurve.TranscendenceTower

A function-field tower with independent coordinate powers and one rational place carrying the coordinate pole.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
structure TranscendenceTower (K E F : Type*) [Field K] [Field E] [Field F]
    [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F] where
  /-- The coordinate function in the intermediate field. -/
  x : E
  /-- The nonnegative coordinate powers are linearly independent over the base field. -/
  hx_indep : LinearIndependent K (fun j : ℕ => x ^ j)
  /-- The intermediate-field place carrying the coordinate pole. -/
  v : Place K E
  /-- The coordinate pole lies at a place of degree one. -/
  hvdeg : v.deg = 1
  /-- The coordinate has a simple pole at the selected place. -/
  hxv : v.ord x = -1
  /-- The coordinate has nonnegative order at every other place. -/
  hxreg : ∀ u : Place K E, u ≠ v → 0 ≤ u.ord x
abbrev

xF

L83 ↗
AlgebraicCurve.TranscendenceTower.xF

The coordinate function mapped to the top field of the tower.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
namespace TranscendenceTower
variable (T : TranscendenceTower K E F)
abbrev xF : F
AlgebraicCurve.TranscendenceTower.poleDivisor

The pullback to the top field of the single intermediate coordinate-pole divisor.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
namespace TranscendenceTower
variable (T : TranscendenceTower K E F)
def poleDivisor [Algebra.IsSeparable E F] [HasPrincipalDivisors K F] : Divisor K F
AlgebraicCurve.TranscendenceTower.RegularOutside

All elements of the given coefficient ring are integral away from the coordinate-pole place.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
namespace TranscendenceTower
variable (T : TranscendenceTower K E F)
def RegularOutside (A : Type*) [CommRing A] [Algebra A E] (T : TranscendenceTower K E F) : Prop
AlgebraicCurve.IntegralBasisInLSpace

A linearly independent family of extension-degree size bounded by a multiple of the tower pole divisor.

Source context 3 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
structure IntegralBasisInLSpace [Algebra.IsSeparable E F] [HasPrincipalDivisors K F]
    (T : TranscendenceTower K E F) where
  /-- The multiple of the tower pole divisor bounding the family. -/
  c : ℕ
  /-- The family indexed by the extension finrank. -/
  u : Fin (Module.finrank E F) → F
  /-- The family is linearly independent over the intermediate field. -/
  hu_indep : LinearIndependent E u
  /-- Every family member belongs to the chosen bounded Riemann space. -/
  hu_mem : ∀ i, u i ∈ LSpace (c • T.poleDivisor)
AlgebraicCurve.HasIntegralBasisInLSpace

A linearly independent family bounded by a multiple of the tower pole divisor exists.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
variable (K E F) in
def HasIntegralBasisInLSpace [Algebra.IsSeparable E F] [HasPrincipalDivisors K F]
    (T : TranscendenceTower K E F) : Prop
AlgebraicCurve.HasIntegralBasisRegularOutside

An extension-degree-size independent family is regular away from the coordinate-pole fibre.

Source context 5 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
variable (K E F) in
variable (K E F) in
def HasIntegralBasisRegularOutside [Algebra.IsSeparable E F] (T : TranscendenceTower K E F) :
  Prop
AlgebraicCurve.HasRegularFractionSubring

A subalgebra with the intermediate field as fraction field is regular away from the coordinate pole.

Source context 6 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
namespace AlgebraicCurve
variable {K E F : Type*} [Field K] [Field E] [Field F]
  [Algebra K E] [Algebra K F] [Algebra E F] [IsScalarTower K E F]
variable (K E F) in
variable (K E F) in
variable (K E F) in
def HasRegularFractionSubring (T : TranscendenceTower K E F) : Prop