Module

RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.lean

Nyll.AlgebraicCurves.Places.Rational.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
72 declarations indexed from sourceView source ↗

RationalFunctionField exists algebraMap of forall ord eq zero

A nonzero rational function whose order vanishes at every place is a nonzero constant. Polynomial- prime divisors and residue evaluation give the required reciprocity calculations.

Imports30
Imported by4

Declarations

Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
instance {K : Type*} [Field K] : HasPrincipalDivisors K (RatFunc K)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.Place.isRational_of_deg_eq_one
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
variable {K F : Type*} [Field K] [Field F] [Algebra K F] (v : Place K F)
theorem isRational_of_deg_eq_one (h : v.deg = 1) : v.IsRational
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.Place.deg_eq_one_of_isRational
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
variable {K F : Type*} [Field K] [Field F] [Algebra K F] (v : Place K F)
theorem deg_eq_one_of_isRational (hv : v.IsRational) : v.deg = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_finitePlace_ne_zero_iff
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
theorem ord_finitePlace_ne_zero_iff {p : K[X]} (hp : Irreducible p) {q : K[X]} (hq : q ≠ 0) :
    (finitePlace K hp).ord (algebraMap K[X] (RatFunc K) q) ≠ 0 ↔ p ∣ q
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.inftyValuation_isEquiv_adicValuation
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
section PlaceInfty
variable [DecidableEq (RatFunc K)]
theorem inftyValuation_isEquiv_adicValuation :
    (RatFunc.inftyValuation K).IsEquiv (placeInfty K).adicValuation
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeInfty_ne_ofHeightOneSpectrum
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
section PlaceInfty
variable [DecidableEq (RatFunc K)]
theorem placeInfty_ne_ofHeightOneSpectrum (w : HeightOneSpectrum K[X]) :
    placeInfty K ≠ Place.ofHeightOneSpectrum w
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.eq_ofHeightOneSpectrum_or_eq_placeInfty
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
theorem eq_ofHeightOneSpectrum_or_eq_placeInfty [DecidableEq (RatFunc K)]
    (v : Place K (RatFunc K)) :
    (∃ w : HeightOneSpectrum K[X], v = Place.ofHeightOneSpectrum w) ∨ v = placeInfty K
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.exists_sub_algebraMap_intDegree_neg
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
section DegInfty
variable (K) [DecidableEq (RatFunc K)]
theorem exists_sub_algebraMap_intDegree_neg {x : RatFunc K}
    (hx : RatFunc.inftyValuation K x ≤ 1) :
    ∃ c : K, x - algebraMap K (RatFunc K) c = 0 ∨
      (x - algebraMap K (RatFunc K) c).intDegree < 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.deg_placeInfty
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
section DegInfty
variable (K) [DecidableEq (RatFunc K)]
theorem deg_placeInfty : (placeInfty K).deg = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.le_exp_neg_one_of_lt_one
Source context 9 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
theorem le_exp_neg_one_of_lt_one {x : ℤᵐ⁰} (hx : x < 1) : x ≤ exp (-1 : ℤ)
AlgebraicCurve.Place.isUnit_algebraMap
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
variable {K F : Type*} [Field K] [Field F] [Algebra K F] (v : Place K F)
theorem _root_.AlgebraicCurve.Place.isUnit_algebraMap {c : K} (hc : c ≠ 0) :
    IsUnit (algebraMap K v.toValuationSubring c)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.Place.adicValuation_algebraMap
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace Place
open _root_.AlgebraicCurve.Place
open _root_.AlgebraicCurve.Place
variable {K F : Type*} [Field K] [Field F] [Algebra K F] (v : Place K F)
open _root_.AlgebraicCurve.Place
theorem adicValuation_algebraMap {c : K} (hc : c ≠ 0) :
    v.adicValuation (algebraMap K F c) = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_ofHeightOneSpectrum_eq_zero_of_notMem
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem ord_ofHeightOneSpectrum_eq_zero_of_notMem (w : HeightOneSpectrum K[X]) {q : K[X]}
    (hq : q ≠ 0) (hmem : q ∉ w.asIdeal) :
    (Place.ofHeightOneSpectrum (K := K) (F := RatFunc K) w).ord
      (algebraMap K[X] (RatFunc K) q) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_placeInfty
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section PlaceInftyOrd
variable [DecidableEq (RatFunc K)]
theorem ord_placeInfty {f : RatFunc K} (hf : f ≠ 0) :
    (placeInfty K).ord f = -f.intDegree
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_placeInfty_algebraMap
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section PlaceInftyOrd
variable [DecidableEq (RatFunc K)]
theorem ord_placeInfty_algebraMap {q : K[X]} (hq : q ≠ 0) :
    (placeInfty K).ord (algebraMap K[X] (RatFunc K) q) = -(q.natDegree : ℤ)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.single_add_single_apply_eq_ord
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section IrreducibleDivisor
variable [DecidableEq (RatFunc K)]
theorem single_add_single_apply_eq_ord {p : K[X]} (hp : Irreducible p)
    (v : Place K (RatFunc K)) :
    (Finsupp.single (finitePlace K hp) (1 : ℤ)
        + Finsupp.single (placeInfty K) (-(p.natDegree : ℤ))) v
      = v.ord (algebraMap K[X] (RatFunc K) p)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.degree_single_add_single
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section IrreducibleDivisor
variable [DecidableEq (RatFunc K)]
theorem degree_single_add_single {p : K[X]} (hp : Irreducible p) :
    Divisor.degree (Finsupp.single (finitePlace K hp) (1 : ℤ)
        + Finsupp.single (placeInfty K) (-(p.natDegree : ℤ))) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor

The finitely supported divisor whose coefficients are the orders of the nonzero function.

Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
def principalDivisor {f : RatFunc K} (hf : f ≠ 0) : Divisor K (RatFunc K)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor_apply
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem principalDivisor_apply {f : RatFunc K} (hf : f ≠ 0) (v : Place K (RatFunc K)) :
    principalDivisor hf v = v.ord f
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor_isPrincipal
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem principalDivisor_isPrincipal {f : RatFunc K} (hf : f ≠ 0) :
    (principalDivisor hf).IsPrincipal
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.degree_principalDivisor
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem degree_principalDivisor {f : RatFunc K} (hf : f ≠ 0) :
    Divisor.degree (principalDivisor hf) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.sum_ord_mul_deg_eq_zero
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem sum_ord_mul_deg_eq_zero {f : RatFunc K} (hf : f ≠ 0) :
    ∑ v ∈ (finite_setOf_ord_ne_zero hf).toFinset, v.ord f * (v.deg : ℤ) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeOfPoint_ne_placeInfty
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
theorem placeOfPoint_ne_placeInfty [DecidableEq (RatFunc K)] (a : K) :
    placeOfPoint K a ≠ placeInfty K
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_algebraMap_eq_mul
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
theorem ord_placeOfPoint_algebraMap_eq_mul (a : K) {q : K[X]} (hq : q ≠ 0) :
    (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) q)
      = (rootMultiplicity a q : ℤ)
          * (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) (X - C a))
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.dvd_ord_placeOfPoint
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
theorem dvd_ord_placeOfPoint (a : K) {f : RatFunc K} (hf : f ≠ 0) :
    (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) (X - C a)) ∣ (placeOfPoint K a).ord f
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_X_sub_C
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
theorem ord_placeOfPoint_X_sub_C (a : K) :
    (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) (X - C a)) = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_placeOfPoint_algebraMap
Source context 14 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
theorem ord_placeOfPoint_algebraMap (a : K) {q : K[X]} (hq : q ≠ 0) :
    (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) q) = rootMultiplicity a q
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.exists_eq_placeOfPoint
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem exists_eq_placeOfPoint [IsAlgClosed K] (w : HeightOneSpectrum K[X]) :
    ∃ a : K, Place.ofHeightOneSpectrum (K := K) (F := RatFunc K) w = placeOfPoint K a
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.eq_placeOfPoint_or_eq_placeInfty
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem eq_placeOfPoint_or_eq_placeInfty [IsAlgClosed K] [DecidableEq (RatFunc K)]
    (v : Place K (RatFunc K)) :
    (∃ a : K, v = placeOfPoint K a) ∨ v = placeInfty K
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ofOption
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
def ofOption [DecidableEq (RatFunc K)] : Option K → Place K (RatFunc K)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ofOption_bijective
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem ofOption_bijective [IsAlgClosed K] [DecidableEq (RatFunc K)] :
    Function.Bijective (ofOption K)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeEquivOption

The classification by base-field points, with none representing the place at infinity.

Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
def placeEquivOption [IsAlgClosed K] [DecidableEq (RatFunc K)] :
    Place K (RatFunc K) ≃ Option K
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_some
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem placeEquivOption_symm_some [IsAlgClosed K] [DecidableEq (RatFunc K)] (a : K) :
    (placeEquivOption K).symm (some a) = placeOfPoint K a
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeEquivOption_symm_none
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem placeEquivOption_symm_none [IsAlgClosed K] [DecidableEq (RatFunc K)] :
    (placeEquivOption K).symm none = placeInfty K
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeEquivOption_placeOfPoint
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem placeEquivOption_placeOfPoint [IsAlgClosed K] [DecidableEq (RatFunc K)] (a : K) :
    placeEquivOption K (placeOfPoint K a) = some a
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.placeEquivOption_placeInfty
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem placeEquivOption_placeInfty [IsAlgClosed K] [DecidableEq (RatFunc K)] :
    placeEquivOption K (placeInfty K) = none
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.deg_eq_one_of_isAlgClosed
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable (K : Type*) [Field K]
variable {K}
variable (K)
theorem deg_eq_one_of_isAlgClosed [IsAlgClosed K] (v : Place K (RatFunc K)) : v.deg = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.algebraMap_polynomial_ne_zero
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem algebraMap_polynomial_ne_zero {q : K[X]} (hq : q ≠ 0) :
    algebraMap K[X] (RatFunc K) q ≠ 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.algebraMap_C
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem algebraMap_C (c : K) :
    algebraMap K[X] (RatFunc K) (C c) = algebraMap K (RatFunc K) c
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.evalAt_placeOfPoint_algebraMap
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem evalAt_placeOfPoint_algebraMap (a : K) (q : K[X]) :
    (placeOfPoint K a).evalAt (algebraMap K[X] (RatFunc K) q) = q.eval a
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.evalAt_placeOfPoint_X_sub_C
Source context 13 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
theorem evalAt_placeOfPoint_X_sub_C (a b : K) :
    (placeOfPoint K a).evalAt (algebraMap K[X] (RatFunc K) (X - C b)) = a - b
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.mem_placeInfty_of_intDegree_nonpos
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section PlaceInfty
variable [DecidableEq (RatFunc K)]
theorem mem_placeInfty_of_intDegree_nonpos {f : RatFunc K} (hf : f ≠ 0)
    (h : f.intDegree ≤ 0) : f ∈ (placeInfty K).toValuationSubring
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.evalAt_placeInfty_eq
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section PlaceInfty
variable [DecidableEq (RatFunc K)]
theorem evalAt_placeInfty_eq {f : RatFunc K} {c : K}
    (h : f - algebraMap K (RatFunc K) c = 0
      ∨ (f - algebraMap K (RatFunc K) c).intDegree < 0) :
    (placeInfty K).evalAt f = c
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.evalAt_placeInfty_X_sub_C_div
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section PlaceInfty
variable [DecidableEq (RatFunc K)]
theorem evalAt_placeInfty_X_sub_C_div (a a₀ : K) :
    (placeInfty K).evalAt
        (algebraMap K[X] (RatFunc K) (X - C a) / algebraMap K[X] (RatFunc K) (X - C a₀))
      = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor_X_sub_C
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
theorem principalDivisor_X_sub_C (b : K) :
    principalDivisor (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero b))
      = Finsupp.single (placeOfPoint K b) 1 + Finsupp.single (placeInfty K) (-1)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_X_sub_C
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
theorem ord_X_sub_C (b : K) (v : Place K (RatFunc K)) :
    v.ord (algebraMap K[X] (RatFunc K) (X - C b))
      = (Finsupp.single (placeOfPoint K b) (1 : ℤ)
          + Finsupp.single (placeInfty K) (-1 : ℤ)) v
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_X_sub_C_placeOfPoint_of_ne
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem ord_X_sub_C_placeOfPoint_of_ne {a b : K} (hab : a ≠ b) :
    (placeOfPoint K a).ord (algebraMap K[X] (RatFunc K) (X - C b)) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_X_sub_C_placeOfPoint_self
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem ord_X_sub_C_placeOfPoint_self (b : K) :
    (placeOfPoint K b).ord (algebraMap K[X] (RatFunc K) (X - C b)) = 1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_X_sub_C_placeInfty
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
theorem ord_X_sub_C_placeInfty (b : K) :
    (placeInfty K).ord (algebraMap K[X] (RatFunc K) (X - C b)) = -1
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.isRational_placeOfPoint
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem isRational_placeOfPoint (a : K) : (placeOfPoint K a).IsRational
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor_X_sub_C_div
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem principalDivisor_X_sub_C_div (a a₀ : K) :
    principalDivisor (div_ne_zero (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero a))
        (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero a₀)))
      = Finsupp.single (placeOfPoint K a) 1 + Finsupp.single (placeOfPoint K a₀) (-1)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.evalAt_placeOfPoint_X_sub_C_div
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section CrossRatio
variable [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem evalAt_placeOfPoint_X_sub_C_div (a a₀ : K) {b : K} (hba₀ : b ≠ a₀) :
    (placeOfPoint K b).evalAt
        (algebraMap K[X] (RatFunc K) (X - C a) / algebraMap K[X] (RatFunc K) (X - C a₀))
      = (b - a) / (b - a₀)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.isRational_of_isAlgClosed
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
omit [DecidableEq (RatFunc K)] in
theorem isRational_of_isAlgClosed (v : Place K (RatFunc K)) : v.IsRational
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.algebraMap_const_ne_zero
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem algebraMap_const_ne_zero {c : K} (hc : c ≠ 0) : algebraMap K (RatFunc K) c ≠ 0
Source context 15 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
instance : DecidableEq (Place K (RatFunc K))
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_ne_zero_of_mem_support
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem ord_ne_zero_of_mem_support {g : RatFunc K} (hg : g ≠ 0) {v : Place K (RatFunc K)}
    (hv : v ∈ (principalDivisor hg).support) : v.ord g ≠ 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.sum_ord_eq_zero
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem sum_ord_eq_zero {f : RatFunc K} (hf : f ≠ 0) :
    ∑ v ∈ (principalDivisor hf).support, v.ord f = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.zpow_sum_eq_prod
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem zpow_sum_eq_prod {c : K} (hc : c ≠ 0) {ι : Type*} (s : Finset ι) (n : ι → ℤ) :
    ∏ i ∈ s, c ^ n i = c ^ (∑ i ∈ s, n i)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.principalDivisor_congr
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem principalDivisor_congr {f g : RatFunc K} (hf : f ≠ 0) (hg : g ≠ 0) (h : f = g) :
    principalDivisor hf = principalDivisor hg
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_algebraMap_right
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_algebraMap_right {f : RatFunc K} (hf : f ≠ 0) {c : K} (hc : c ≠ 0) :
    Divisor.evalFun f (principalDivisor (algebraMap_const_ne_zero hc))
      = Divisor.evalFun (algebraMap K (RatFunc K) c) (principalDivisor hf)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_mul_right
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_mul_right {f g₁ g₂ : RatFunc K} (hf : f ≠ 0) (hg₁ : g₁ ≠ 0) (hg₂ : g₂ ≠ 0)
    (hd₁ : ∀ v : Place K (RatFunc K), v.ord f = 0 ∨ v.ord g₁ = 0)
    (hd₂ : ∀ v : Place K (RatFunc K), v.ord f = 0 ∨ v.ord g₂ = 0)
    (h₁ : Divisor.evalFun f (principalDivisor hg₁) = Divisor.evalFun g₁ (principalDivisor hf))
    (h₂ : Divisor.evalFun f (principalDivisor hg₂)
      = Divisor.evalFun g₂ (principalDivisor hf)) :
    Divisor.evalFun f (principalDivisor (mul_ne_zero hg₁ hg₂))
      = Divisor.evalFun (g₁ * g₂) (principalDivisor hf)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_mul_left
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_mul_left {f₁ f₂ g : RatFunc K} (hf₁ : f₁ ≠ 0) (hf₂ : f₂ ≠ 0) (hg : g ≠ 0)
    (hd₁ : ∀ v : Place K (RatFunc K), v.ord f₁ = 0 ∨ v.ord g = 0)
    (hd₂ : ∀ v : Place K (RatFunc K), v.ord f₂ = 0 ∨ v.ord g = 0)
    (h₁ : Divisor.evalFun f₁ (principalDivisor hg) = Divisor.evalFun g (principalDivisor hf₁))
    (h₂ : Divisor.evalFun f₂ (principalDivisor hg)
      = Divisor.evalFun g (principalDivisor hf₂)) :
    Divisor.evalFun (f₁ * f₂) (principalDivisor hg)
      = Divisor.evalFun g (principalDivisor (mul_ne_zero hf₁ hf₂))
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_zpow_right
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_zpow_right {f g : RatFunc K} (hf : f ≠ 0) (hg : g ≠ 0) (n : ℤ)
    (hd : ∀ v : Place K (RatFunc K), v.ord f = 0 ∨ v.ord g = 0)
    (h : Divisor.evalFun f (principalDivisor hg)
      = Divisor.evalFun g (principalDivisor hf)) :
    Divisor.evalFun f (principalDivisor (zpow_ne_zero n hg))
      = Divisor.evalFun (g ^ n) (principalDivisor hf)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_zpow_left
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_zpow_left {f g : RatFunc K} (hf : f ≠ 0) (hg : g ≠ 0) (n : ℤ)
    (hd : ∀ v : Place K (RatFunc K), v.ord f = 0 ∨ v.ord g = 0)
    (h : Divisor.evalFun f (principalDivisor hg)
      = Divisor.evalFun g (principalDivisor hf)) :
    Divisor.evalFun (f ^ n) (principalDivisor hg)
      = Divisor.evalFun g (principalDivisor (zpow_ne_zero n hf))
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.exists_algebraMap_of_forall_ord_eq_zero
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem exists_algebraMap_of_forall_ord_eq_zero {g : RatFunc K} (hg : g ≠ 0)
    (h : ∀ v : Place K (RatFunc K), v.ord g = 0) :
    ∃ c : K, c ≠ 0 ∧ g = algebraMap K (RatFunc K) c
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.crossRatio_reciprocity
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem crossRatio_reciprocity {a a₀ b : K} (hba : b ≠ a) (hba₀ : b ≠ a₀) :
    Divisor.evalFun
        (algebraMap K[X] (RatFunc K) (X - C a) / algebraMap K[X] (RatFunc K) (X - C a₀))
        (principalDivisor (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero b)))
      = Divisor.evalFun (algebraMap K[X] (RatFunc K) (X - C b))
        (principalDivisor (div_ne_zero (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero a))
          (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero a₀))))
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_of_forall_ord_eq_zero
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [DecidableEq (RatFunc K)] in
theorem reciprocity_of_forall_ord_eq_zero {f g : RatFunc K} (hf : f ≠ 0) (hg : g ≠ 0)
    (hzero : ∀ v : Place K (RatFunc K), v.ord g = 0) :
    Divisor.evalFun f (principalDivisor hg) = Divisor.evalFun g (principalDivisor hf)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_div_zpow
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] [DecidableEq (RatFunc K)] in
theorem ord_div_zpow (v : Place K (RatFunc K)) {g h : RatFunc K} (hg : g ≠ 0) (hh : h ≠ 0)
    (m : ℤ) : v.ord (g / h ^ m) = v.ord g - m * v.ord h
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.ord_X_sub_C_eq_zero_of_ne
Source context 17 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
omit [IsAlgClosed K] in
theorem ord_X_sub_C_eq_zero_of_ne (b : K) {v : Place K (RatFunc K)}
    (hvb : v ≠ placeOfPoint K b) (hvinf : v ≠ placeInfty K) :
    v.ord (algebraMap K[X] (RatFunc K) (X - C b)) = 0
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_linear
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
theorem reciprocity_linear (b : K) :
    ∀ (n : ℕ) (f : RatFunc K) (hf : f ≠ 0),
      (placeInfty K).ord f = 0 → (placeOfPoint K b).ord f = 0 →
      (principalDivisor hf).support.card ≤ n →
      Divisor.evalFun f
          (principalDivisor (algebraMap_polynomial_ne_zero (X_sub_C_ne_zero b)))
        = Divisor.evalFun (algebraMap K[X] (RatFunc K) (X - C b)) (principalDivisor hf)
AlgebraicCurves.Places.Rational.Proofs.RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField.reciprocity_of_ord_placeInfty_eq_zero
Source context 16 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
noncomputable section
open Polynomial IsDedekindDomain WithZero IsLocalRing
open scoped Polynomial
namespace AlgebraicCurve
open _root_.AlgebraicCurve
open _root_.AlgebraicCurve
namespace RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
open _root_.AlgebraicCurve.RationalFunctionField
variable {K : Type*} [Field K]
section Reciprocity
variable [IsAlgClosed K] [DecidableEq (RatFunc K)]
local instance : DecidableEq (Place K (RatFunc K)) := Classical.decEq _
theorem reciprocity_of_ord_placeInfty_eq_zero :
    ∀ (n : ℕ) (f g : RatFunc K) (hf : f ≠ 0) (hg : g ≠ 0),
      (placeInfty K).ord f = 0 →
      (∀ v : Place K (RatFunc K), v.ord f = 0 ∨ v.ord g = 0) →
      ((principalDivisor hg).support.erase (placeInfty K)).card ≤ n →
      Divisor.evalFun f (principalDivisor hg) = Divisor.evalFun g (principalDivisor hf)
AlgebraicCurve.RationalFunctionField.exists_algebraMap_of_forall_ord_eq_zero
Source context 10 commands

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

section ProofImplementation
namespace AlgebraicCurves.Places.Rational.Proofs
namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
open Polynomial _root_.AlgebraicCurve in
with_weak_namespace _root_.AlgebraicCurves.Places.Rational.Proofs
open RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve in
open _root_.AlgebraicCurve.RationalFunctionField in
open
  RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero.AlgebraicCurve.RationalFunctionField
in
with_weak_namespace RationalFunctionField_exists_algebraMap_of_forall_ord_eq_zero
with_weak_namespace AlgebraicCurve
theorem _root_.AlgebraicCurve.RationalFunctionField.exists_algebraMap_of_forall_ord_eq_zero {K :
  Type*} [Field K] {g : RatFunc K} (hg : g ≠ 0) (h : ∀ v : Place K (RatFunc K), v.ord g = 0) :
  ∃ c : K, c ≠ 0 ∧ g = algebraMap K (RatFunc K) c