Module

MonicProjection.lean

Nyll.SchemeTheory.PlaneCurves.MonicProjection
29 declarations indexed from sourceView source ↗

Monic projections of affine plane curves

This file isolates the finite-degree input used in Fried--Jarden, Lemma 6.2.2(b),(d). If the equation of a plane curve is monic in Y, its coordinate ring is a finite free algebra over the polynomial ring in X. After passing to fraction fields, the same rank is the degree in Y, hence is bounded by the total degree of the equation.

Imports5
Imported by4

Declarations

FieldArithmetic.Chapter06.MonicPlaneCurveProjection.ProjectionBase

The coefficient ring K[X], represented as the one-variable multivariate polynomial ring used by MvPolynomial.finSuccEquiv.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
abbrev ProjectionBase (K : Type u) [Field K]
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.ProjectionFunctionField

The rational function field K(X).

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
abbrev ProjectionFunctionField (K : Type u) [Field K]
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateSwap

Exchange the two affine coordinates.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def coordinateSwap : Fin 2 ≃ Fin 2
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.asPolynomialY

View a bivariate polynomial as a polynomial in the original Y variable with coefficients in K[X].

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def asPolynomialY :
    BivariatePolynomial K ≃ₐ[K] Polynomial (ProjectionBase K)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.yPolynomial

A bivariate equation, viewed as a polynomial in Y over K[X].

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def yPolynomial (f : BivariatePolynomial K) :
    Polynomial (ProjectionBase K)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.degreeY

The degree of a bivariate equation in Y.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def degreeY (f : BivariatePolynomial K) : ℕ
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.asPolynomialY_apply
Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem asPolynomialY_apply (f : BivariatePolynomial K) :
    asPolynomialY f =
      MvPolynomial.finSuccEquiv K 1
        (MvPolynomial.rename coordinateSwap f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.asPolynomialY_X
Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem asPolynomialY_X :
    asPolynomialY (K := K) (MvPolynomial.X (R := K) (0 : Fin 2)) =
      Polynomial.C (MvPolynomial.X (R := K) (0 : Fin 1))
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.asPolynomialY_Y
Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem asPolynomialY_Y :
    asPolynomialY (K := K) (MvPolynomial.X (R := K) (1 : Fin 2)) =
      (Polynomial.X : Polynomial (ProjectionBase K))
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.degreeY_le_totalDegree

Degree in Y is bounded by total degree.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem degreeY_le_totalDegree (f : BivariatePolynomial K) :
    degreeY f ≤ MvPolynomial.totalDegree f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.yPolynomial_irreducible

Irreducibility is preserved by viewing the equation as a polynomial in Y.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem yPolynomial_irreducible
    {f : BivariatePolynomial K} (hf : Irreducible f) :
    Irreducible (yPolynomial f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.degreeY_pos

An irreducible monic equation has positive degree in Y.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem degreeY_pos
    {f : BivariatePolynomial K} (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    0 < degreeY f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.ProjectionModel

The polynomial-quotient model attached to the Y-projection.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
abbrev ProjectionModel (f : BivariatePolynomial K)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.mapped_equationIdeal
Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
theorem mapped_equationIdeal (f : BivariatePolynomial K) :
    (equationIdeal f).map
      (asPolynomialY (K := K)).toRingEquiv.toRingHom =
      Ideal.span ({yPolynomial f} : Set _)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRingEquivProjectionModel

The coordinate ring and the polynomial quotient are canonically equivalent as K-algebras.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def coordinateRingEquivProjectionModel (f : BivariatePolynomial K) :
    CoordinateRing f ≃ₐ[K] ProjectionModel f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.projectionAlgebra

The K[X]-algebra structure on the coordinate ring induced by projection to the X-axis.

Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
def projectionAlgebra (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.projectionAlgebraInstance
Source context 8 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRingEquivProjection

The polynomial-quotient equivalence, now over the projection base.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
def coordinateRingEquivProjection (f : BivariatePolynomial K) :
    @AlgEquiv (ProjectionBase K) (CoordinateRing f) (ProjectionModel f)
      _ _ _ (projectionAlgebra f) _
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRingPowerBasis

The monic quotient power basis, transported to the coordinate ring.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
def coordinateRingPowerBasis
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    @PowerBasis (ProjectionBase K) (CoordinateRing f)
      _ _ (projectionAlgebra f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRingPowerBasis_dim
Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem coordinateRingPowerBasis_dim
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    (coordinateRingPowerBasis f hf).dim = degreeY f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRing_moduleFinite

A monic plane-curve coordinate ring is finite free over K[X].

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem coordinateRing_moduleFinite
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    @Module.Finite (ProjectionBase K) (CoordinateRing f)
      _ _ (projectionAlgebra f).toModule
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRing_moduleFree

A monic plane-curve coordinate ring is free over K[X].

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem coordinateRing_moduleFree
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    @Module.Free (ProjectionBase K) (CoordinateRing f)
      _ _ (projectionAlgebra f).toModule
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRing_finrank

The module rank of a monic plane-curve coordinate ring is its degree in Y.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem coordinateRing_finrank
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    @Module.finrank (ProjectionBase K) (CoordinateRing f)
      _ _ (projectionAlgebra f).toModule =
      degreeY f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.coordinateRing_isIntegral

Module-finiteness supplies integrality of the coordinate ring over K[X].

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem coordinateRing_isIntegral
    (f : BivariatePolynomial K) (hf : (yPolynomial f).Monic) :
    @Algebra.IsIntegral (ProjectionBase K) (CoordinateRing f)
      _ _ (projectionAlgebra f)
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.projectionAlgebra_injective

The projection map K[X] → K[X,Y]/(f) is injective when the transformed equation is irreducible and monic.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem projectionAlgebra_injective
    {f : BivariatePolynomial K} (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    Function.Injective
      (@algebraMap (ProjectionBase K) (CoordinateRing f)
        _ _ (projectionAlgebra f))
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.functionFieldAlgebra

The field extension K(X) → Frac(K[X,Y]/(f)) induced by the monic projection. Irreducibility supplies the domain structure, while monicity supplies injectivity of the map from K[X].

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
def functionFieldAlgebra
    (f : BivariatePolynomial K) (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    Algebra (ProjectionFunctionField K) (FractionRing (CoordinateRing f))
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.functionField_finiteDimensional

The function field is finite-dimensional over K(X).

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem functionField_finiteDimensional
    (f : BivariatePolynomial K) (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    @Module.Finite (ProjectionFunctionField K)
      (FractionRing (CoordinateRing f)) _ _
      (functionFieldAlgebra f hirr hmonic).toModule
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.functionField_finrank

Passing to fraction fields preserves the power-basis rank.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem functionField_finrank
    (f : BivariatePolynomial K) (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    @Module.finrank (ProjectionFunctionField K)
      (FractionRing (CoordinateRing f)) _ _
      (functionFieldAlgebra f hirr hmonic).toModule =
      degreeY f
FieldArithmetic.Chapter06.MonicPlaneCurveProjection.functionField_finrank_le_totalDegree

The function-field degree is bounded by the total degree of the plane equation.

Source context 9 commands

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

noncomputable section
namespace FieldArithmetic
namespace Chapter06
namespace MonicPlaneCurveProjection
open MvPolynomial Polynomial
open AffinePlaneCurve
universe u
variable {K : Type u} [Field K]
local instance projectionAlgebraInstance (f : BivariatePolynomial K) :
    Algebra (ProjectionBase K) (CoordinateRing f) :=
  projectionAlgebra f
theorem functionField_finrank_le_totalDegree
    (f : BivariatePolynomial K) (hirr : Irreducible f)
    (hmonic : (yPolynomial f).Monic) :
    @Module.finrank (ProjectionFunctionField K)
      (FractionRing (CoordinateRing f)) _ _
      (functionFieldAlgebra f hirr hmonic).toModule ≤
      MvPolynomial.totalDegree f